tag 标签: A40i

相关帖子
相关博文
  • 热度 9
    2023-3-16 13:31
    472 次阅读|
    0 个评论
    如果你试着在Linux系统里面输入中文,那么将会有一片乱码呈现在你面前,这是因为Linux系统的默认语言是英文。但是如果可以显示中文的话,那么在使用过程中的便利程度一定会大大提升。今天小编就通过飞凌嵌入式的OKA40i-C开发板来为大家演示让Linux系统显示中文的修改方法。 STEP 1 如果之前使用的是全源码编译方式对源码进行编译处理的,就可以直接往下走;如果之前有更改过源码部分,且使用的是单步编译,则需要重新解压一份OKA40i-C开发板的源码,进入该源码的lichee文件夹,执行sudo ./build.sh进行一次全编译,耗时会有点长,需要耐心的等待。 STEP 2 在新的源码全编译的过程中,到之前使用的源码里面做一些准备工作吧;要是更改过程中遇到只读等权限问题,打开的时候加上sudo就好了。 01. 首先在lichee下面找到linux-3.10/.config这个配置文件, 将里面的iso8859-1全部替换成utf8 ,就像下面这样,一共有两处。行前面的“-”表示去掉,“+”表示添加上。 FAT使用的默认输入/输出字符集: -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_DEFAULT_IOCHARSET="utf8" 挂载文件系统时使用的默认NLS -CONFIG_NLS_DEFAULT=" iso8859-1" +CONFIG_NLS_DEFAULT="utf8" 02. out/sun8iw11p1/linux/common/buildroot/target/etc/inputrc 在上方lichee中的文件中添加两行命令: 03. lichee/out/sun8iw11p1/linux/common/buildroot/target/root 然后到上方路径下创建一个.vimrc文件,打开.vimrc文件,在里面添加上三行命令: set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set encoding=utf8 STEP 3 现在,新的源码已经全部编译完成了,在新源码的里面找到busybox-1.25.1这个文件夹。进入以下路径: lichee/out/sun8iw11p1/linux/common/buildroot/build/busybox-1.25.1 01. 执行make menuconfig ARCH=arm进入busybox的图形化编辑界面。 Enable locale support (system needs locale for this to work) Support Unicode Use libc routines for Unicode (else uses internal ones) (65533) Character code to substitute unprintable characters with (195102) Range of supported Unicode characters 更改好之后一路Exit退出,最后选择yes保存配置。 02. 然后更改busybox-1.25.1文件夹路径下的文件 libbb / printable_string.c, 搜索 0x7f ,删除以下两行: 将这里更改为 -if (c = 0x7f) +if (c < ' ') 03. 更改libbb/unicode.c文件,先找到这样一段:static char* FAST_FUNC。然后将里面的1022行和1030行进行修改: 将 = ' ' && c < 0x7f) ? c : '?'; 修改为 = ' ') ? c : '?'; 将 if (c = 0x7f) 修改为 if (c < ' ') 修改完成之后,删除.stamp_built文件和.stamp_target_installed文件,返回到lichee文件夹下面,重新进行全编译sudo ./build.sh操作。 在out/sun8iw11p1/linux/common/buildroot/target/bin路径后面会生成一个busybox的可执行文件,将这个叫busybox的可执行文件替换到需要中文源码的相同路径下面—— lichee/out/sun8iw11p1/linux/common/buildroot/target/bin 里面。 STEP 4 最后,在需要中文的那一份源码里面进行内核编译,打包文件系统,打包镜像操作,再将镜像烧录到OKA40i-C开发板里面就可以显示中文了。 sudo ./build.sh -m kernel sudo ./build.sh -m pack_rootfs sudo ./build.sh pack 最后我们来验证一下。可以看到此时已经可以直接进行中文输入了,并且和windows对接的中文文件可以直接显示查看。 结语 Linux系统中文显示的更改其实就是更改内核的字符集和打开busybox的显示封锁,第一次编译好后,以后需要中文的busybox可以直接使用这次的busybox进行替换,节省了很多的工作量。更改完成之后就可以在OKA40i-C开发板的Linux系统上面编辑和查看中文了。
  • 热度 7
    2022-12-23 14:09
    1036 次阅读|
    0 个评论
    为了给客户的测试和开发提供便利,飞凌嵌入式的开发板产品一般都支持多种操作系统,以基于全志T507H处理器设计研发的OKT507-C开发板为例,它支持三种操作系统,分别是:Linux、Android 和Forlinx Desktop(Ubuntu),这里提到的Forlinx Desktop系统是飞凌嵌入式在Ubuntu base的基础上构建的桌面操作系统,完全兼容Ubuntu18.04,相对传统的Linux系统而言易用性更高。 Forlinx Desktop(Ubuntu)系统基于Ubuntu官方为嵌入式设备制作的操作系统-Lubuntu,该操作系统具备apt-get、ldd等常用的命令,若需要安装软件则直接apt-get在线安装即可,不需进行交叉编译移植等繁琐操作。但是每次重新烧写镜像之后,之前安装的软件就得重新安装,比较繁琐,如果需要批量操作则每块开发板都需要去apt-get安装,这样会大幅增加工作量,很不便于批量化生产。 能不能把软件一起打包到镜像呢?这样每次烧写完就不用再去apt-get在线安装了。答案当然是肯定的,这就涉及到文件系统的定制了,那么接下来,小编就为大家介绍在Forlinx Desktop(Ubuntu)系统上定制文件系统的操作过程。 1. 解压文件系统 首先,找到OKT507-desktop-release源码的文件系统所在的目录,然后将文件系统压缩包解压,路径如下: OKT507-desktop-release/ubuntu 解压后,可看到文件系统目录OKT507-linux-ubuntu,进入到此目录后可看到如下文件夹: 2. 安装QEMU 这里简单介绍下QEMU,它是一个小巧的模拟器,可以模拟很多硬件如ARM、x86、AMD64/Intel64等。QEMU用途广泛,比如Xen、Android模拟器等都是基于QEMU的。下面我们开始在虚拟机进行安装QEMU,如下: ① 更新下载源: sudo apt-get update ②执行命令安装: sudo apt-get install qemu-aarch64-static sudo apt-get install qemu-user-static 3. 修改配置 ① 将QEMU的qemu-arm-static拷贝到文件系统目录OKT507-linux-ubuntu,如下: sudo cp /usr/bin/qemu-arm-static usr/bin/ ② 拷贝PC主机端的DNS配置,因为待会我们安装程序时要用网络: sudo cp -b /etc/resolv.conf etc/resolv.conf ③ 修改下载源: sudo vim etc/apt/sources.list 添加 deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe 4. 挂载文件系统 因为我们这里是通过脚本的方式挂载和卸载文件系统,所以需要编写一个脚本挂载和卸载文件系统。 ① 新建一个脚本文件命名为ch-mount.sh,附代码如下: #!/bin/bash function mnt() { echo "MOUNTING" sudo mount -t proc /proc ${2}proc sudo mount -t sysfs /sys ${2}sy s sudo mount -o bind /dev ${2}dev sudo chroot ${2} } function umnt() { echo "UNMOUNTING" sudo umount ${2}proc sudo umount${2}sys sudo umount${2}dev } if && ; then mnt $1 $2 elif && ; then umnt $1 $2 else echo"" echo"Either1'st,2'ndorbothparametersweremissing" echo"" echo "1'st parameter can be one of these: -m(mount) OR -u(umount)" echo "2'nd parameter is the full path of rootfs directory(withtrailing'/')" echo"" echo"Forexample:ch-mount-m/media/sdcard/" echo"" echo1stparameter:${1} echo 2nd parameter : ${2} fi ② 设置这个shell脚本可执行权限,如下: sudo chmod 777 ch-mount.sh ③ 挂载文件系统: 执行ch-mount.sh脚本 指定参数-m,挂载成功如下: sudo ./ch-mount.sh -m ./ 5. 安装软件 前面我们挂载了文件系统,已将文件系统挂载到了QEMU模拟器,接下来就可以安装我们所需要的软件了。 ① 更新下载源: apt update 注意:更新下载源可能会报错,这里需要注意一下,因为tmp文件夹权限不够,chmod为其赋予权限。 如下: chmod 777 /tmp ② 安装软件: 至此,便可以安装所需软件了,在这里用apt-get安装自己所需软件,根据所需安装。我们这里来安装一个minicom串口测试工具。如下: ③ 安装完成后,exit退出QEMU。 ④ 执行ch-mount.sh脚本卸载文件系统,指定参数-u,卸载成功后打印如下: 注意:我们exit退出后,只是退出了QEMU模拟器,并没有卸载文件系统,一定要执行脚本卸载文件系统。 6. 打包文件系统 ① 完成前面的步骤后,用tar命令将当前文件夹下所有文件压缩,命名为OKT507-linux-ubuntu.tar.gz。如下: sudo tar -cvzf OKT507-linux-ubuntu.tar.gz ./* ② 压缩完成后,为文件系统压缩包OKT507-linux-ubuntu.tar.gz赋予权限,如下: sudo chmod a+w OKT507-linux-ubuntu.tar.gz ③ 将刚打包好的压缩包替换到上一级目录下的旧的文件系统压缩包。 ④ 重新编译打包后生成新的镜像烧录开发板。 7. 测试方法 烧录到板子后,在终端启动minicom,验证下是否安装上。如下: 从上图红框可以看出,通过终端命令启动了minicom,说明我们在QEMU中安装成功了,至此Ubuntu文件系统定制就做完了。 通过这种方法可以个性化的定制属于自己文件系统,安装自己所需软件,也可以根据自己需求将出厂不需要的软件用相同的方式卸载掉,这样既能减少工作量,又利于批量化生产。 以上就是小编为大家带来的在Forlinx Desktop(Ubuntu)系统上定制文件系统的操作过程。想要了解有关OKT507-C开发板更多的功能和详情,可以点击下方产品图片进入飞凌嵌入式官网查看。
  • 2022-12-19 17:01
    3 次阅读|
    0 个评论
    本篇试用报告由发烧友zealsoft提供,感谢zealsoft的支持。飞凌嵌入式会在电子发烧友和电路城论坛持续开展开发板有奖试用活动,更有京东E卡等着你!欢迎大家的持续关注。 FFmpeg的安装 FFmpeg是用来记录、转换数字音频、视频的开源软件,它支持文件和网络流操作。它支持以函数库的方式使用,所以有很多软件都依赖它,比如VLC、暴风影音、腾讯会议等。它的命令行程序也非常强大,各种命令行选项学起来虽然困难,但是几乎能够满足日常对音视频的各种处理需求。今天我们就通过飞凌嵌入式OKA40i-C开发板来介绍它的命令行工作方式。 FFmpeg提供了全部源代码,所以在网上可以找到很多教程是关于交叉编译ARM版本的。我们测试的版本使用的是FFmpeg-release-armel-static.tar.xz。解压缩以后拷贝到飞凌嵌入式OKA40i-C开发板上并设置好权限就可以使用了。 USB摄像头测试 OKA40i-C开发板接口丰富,它支持USB摄像头、CMOS-OV5640摄像头、模拟摄像头。把USB摄像头插入开发板,然后使用 v4l2-ctl --list-devices 使用下面的命令可以看到该摄像头的全部参数: 我们使用了两种型号的USB摄像头,按照手册说明使用内置的uvccamera程序进行测试,不过都没有成功,得到的错误信息如下图所示。 我们使用FFmpeg可以抓取视频,命令行如下: ffmpeg -f video4linux2 -s 640x480 -pix_fmt yuyv422 -i /dev/video0 out.yuv 使用Windows版本的ffplay可以正常播放抓取的视频,命令行如下: ffplay -s 640x480 -pix_fmt yuyv422 out.yuv 上面保存的是YUV格式的原始视频,如果要保存压缩视频,可以用下面的命令行: ffmpeg -y -t 15 -r 25 -f video4linux2 -i /dev/video0 out3.mp4-timestamps bs 其中的-r 25表示每秒采样25帧,这个参数必须有,否则FFmpeg可能会不断地采集并压缩同一视频帧。-r参数超过30没有什么意义,因为USB摄像头的最大能力就是30fps。 飞凌嵌入式OKA40i-C开发板可以对于1080P的视频压缩达到45fps,所以对USB摄像头的视频压缩应该没有什么压力。 FFmpeg性能测试 FFmpeg有个benchmark参数可以方便进行性能测试。我们对A40i开发板自带的一个MP4视频就行解码测试,命令行如下: ffmpeg-benchmark -i translate.mp4 -f null – FFmpeg产生实时视频流 FFmpeg可以支持实时视频流的发送和接收,从而可以把OKA40i-C开发板上的视频实时发送到PC上,由PC上的软件实时接收并显示。我们可以使用下面的命令将OKA40i-C开发板上的一个MP4转换为RTP码流发送的PC上: ffmpeg -re -i test.mp4 -an -c copy -f rtp rtp://192.168.0.105:1234 使用Wireshark可以看到在PC机的1234端口收到大量来自OKA40i-C开发板的H.264视频流。 如果想在PC上显示视频流,需要建立一个SDP文件,它描述视频流中的端口和编码信息。 SDP是来自SIP标准中定义,目前VLC、Apple QuickTime和ffplay等很多软件都可以打开SDP文件,并按照SDP中的描述显示视频流。SDP文件并不需要手工编写,在ffmpeg运行时它会显示命令行所对应的SDP定义,如下图所示。 FFmpeg转发USB摄像头的视频流 前面演示了将MP4文件转换为视频流,我们也可以将USB摄像头采集的内容实时转发到PC上,使用下面的命令行即可。 ffmpeg -y -t 15 -r 25 -f video4linux2 -i /dev/video0 -f rtp usb.sdp 再使用下面的命令行就可以看到实时抓取的USB摄像头的视频流了: ffplay -protocol_whitelist "file,udp,rtp" -i usb.sdp
  • 2022-11-15 09:18
    0 个评论
    【1】挂载SATA硬盘 飞凌OKA40i-C开发板,提供了SATA接口,今天笔者试着挂载SATA硬盘。 【硬件准备】 1、SSD硬盘,拆了一个N年前的容量120G的硬盘。 2、从报废的电源上剪下来D头转SATA电源线。 3、SATA数据线一条。 4、12V电源。 【硬件连接】 1、12V源接接到开发板的12V电源(注:我这里用的数字电源有夹子,所以直接夹到SATA电源线的12V电源线上了); 2、将D头插入开发板的D头插座; 3、用SATA数据线将硬盘与主板的SATA接口连上; 4、12V上电,开发板上电; (在这里给提个建议,电源最好能改为12V输入,这样就不用麻烦再去准备个12V电源了,对于新手来说,如果电源接反,那开发板就挂了); 5、上电,一切正常。 【挂载硬盘】 1、fdisk -l,系统找到了SATA硬盘,在/dev/sda目录下: 2、df -Th查看,没有自动挂载: 3、新建目录:mkdir /mnt/mydriver,然后试着挂载:monut /dev/sda5 /mnt/mydriver,提示错误:unknow filesystem type 'ntfs'。 4、这是因为linux下不认ntfs分区格式,准备格式化为ext4格式。执行命令#mkfs.ext4 /dev/sda5 然后按提示,完成格式化: 5、挂载到/mnt/mydriver目录下,然后用df -Th就可以看到挂载SATA硬盘成功了。 【2 】磁盘的读写速率测试 挂载好了SATA硬盘,这里做一下磁盘速度测试: 通过df -h命令查看磁盘情况: (1)通过hdparm测试读取速率。先测试SATA硬盘的读取速率: cahce读取840MB/s,磁盘持续读取163MB/s。 (2)再测一下OKA40i-C开发板的读取速率: cahce读取830MB/s,磁盘持续读取43MB/s。 2、测试写入速率: 写入速度SSD为:44MB/s,EMMC为:19.2MB/s。 从测试结果来看,开发板的磁盘读取与写入与台式机的性能是差不多的。 以上就是来自发烧友【华仔stm32】的分享。想要了解有关飞凌嵌入式OKA40i-C开发板的更多详情,可以到飞凌嵌入式官网查看。 联系我们: 服 务 热 线 :400-699-6866 飞凌嵌入式官网:https://www.forlinx.com/ 官 方 商 城:https://forlinx.taobao.com/
  • 热度 3
    2022-10-14 17:19
    1230 次阅读|
    1 个评论
    本文将为大家介绍如何在飞凌 OKT507-C开发板上添加两个GPIO按键 ,希望能够对各位工程师有所帮助,本文章以PE5、PE6两个引脚为例。话不多说,下面我们进入主题。 1 GPIO按键添加方法 1. 添加内核配置 Linux内核源代码中集成了很多功能,一般的用户只会用到其中的部分功能。用户从中挑选自己需要的功能,这就叫内核配置。下面我们开始进行配置。 注意: (1)在进行配置前,需要对 OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/configs/sun50iw9p1smp_longan_dcfconfig文件提前做好备份; (2)以下所有图中的红框为修改后的内容。 vi OKT507-linux-sdk/kernel/linux-4.9/.config 2. 添加key节点 添加结点需要我们到设备树中进行添加,设备树是一个描述硬件的数据结构,甚至你可以将其看成一个大结构体(这个结构体就是平台,成员就是具体的设备),将硬件的配置从linux内核的源码中提取出来。 下面打开我们的T507设备树文件,如下: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi 其中按键键值设置如下。 相关键值可通过查看input-event-codes.h文件确定。 vi OKT507-linux-sdk/kernel/linux-4.9/include/uapi/linux/input-event-codes.h 3. 添加引脚定义 添加引脚定义需要用到pinctrl,下面给大家简单介绍下pinctrl。pinctrl就是系统中pin引脚的控制。 假如在使用到GPIO、I2C等功能时,若按引脚逐一地去找对应的寄存器进行配置非常浪费时间和精力,所以内核引入了pinctrl子系统,把引脚的复用和配置抽象出来,只需要芯片厂商把自家芯片的支持进去,就可以很方便的配置引脚。 下面打开我们的pinctrl文件,如下: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi 4. 关闭冲突功能 因为有些功能结点使用的引脚与我们这次复用的引脚发生冲突,会发生引脚不生效的错误,所以我们一定要检查好,然后将其关闭。 如下打开设备树文件: vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi vi OKT507-linux-sdk/kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi 注意: 因摄像头csi复用的引脚与我们这里的冲突,虽然前面将状态disabled了,pinctrl这里也有可能会造成冲突,为了避免不必要的麻烦,我们也将这里注释掉。 5. 驱动修改 gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动基于platform_driver架构,实现了驱动和设备分离,符合Linux设备驱动模型的思想,也符合linux驱动实现模型,即driver和device分离模型。 一般按键驱动,都是基于gpio-keys进行开发的。驱动文件如下: vi OKT507-linux-sdk/kernel/linux-4.9/drivers/input/keyboard/gpio_keys.c 2 测试方法 终端窗口输入evtest,选择 7。 从上图红框可以看出,通过evtest测试工具将内核设备读取并打印设备描述的事件,到这里,GPIO按键就做完了,可以用它来实现很多的功能,比如说按一下切换灯的状态,蜂鸣器响等。 当然不只是这些啦,我们还可以利用它去实现很多其他功能,欢迎各位聪明的工程师小伙伴自行发挥! 以上就是小编为大家带来的在飞凌OKT507-C开发板上添加GPIO按键的全过程,想要了解有关OKT507-C开发板更多的功能和详情,可以 点击下图进入飞凌嵌入式官网 查看。