iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。
【交流群2】258811263(获取开源资料)
【迅为B站】北京迅为电子的个人空间-北京迅为电子个人主页-哔哩哔哩视频
第九十五章 嵌入式Ubuntu系统开发
95.1 Ubuntu下使用WiFi
用户使用 Ubuntu 的时候,需要修改一下配置,wifi 才能使用。
需要注意的是,全能版 V3.5 及其以后的版本,需要按照精英版 wifi 配置,因为 V3.5 的全能版和精英版的 wifi 都是 mt6620 了。如果是以前版本的全能版,则需要使用全能版的修改方法。
95.1.1 精英版wifi 配置
开发板上电启动进入到 Ubuntu 系统后,在开发板的串口里面使用命令“vi /etc/init.d/itop-set”,如下图:
然后打开 itop-set 文件,可看到以下内容:
# mknod /dev/stpwmt c 190 0
# mknod /dev/stpgps c 191 0
# mknod /dev/fm c 193 0
# mknod /dev/wmtWifi c 194 0
# insmod /system/lib/modules/mtk_hif_sdio.ko
# insmod /system/lib/modules/mtk_stp_wmt.ko
# insmod /system/lib/modules/mtk_stp_uart.ko
# insmod /system/lib/modules/mtk_stp_gps.ko
# insmod /system/lib/modules/mt6620_fm_drv.ko
# insmod /system/lib/modules/mtk_fm_priv.ko
# insmod /system/lib/modules/mtk_wmt_wifi.ko WIFI_major=194
# insmod /system/lib/modules/wlan.ko
# chmod 0666 /dev/stpwmt # chmod 0666 /dev/stpgps
# chmod 0666 /dev/fm
# chmod 0666 /dev/wmtWifi # chmod 0660 /dev/ttySAC0
# chmod 0666 /dev/gps
# /system/bin/6620_launcher -m 1 -b 921600 -n /system/etc/firmware/mt6620_patch_hdr.bin -d
/dev/ttySAC0 &
# sleep 1
# echo 1 > /dev/wmtWifi
# wpa_supplicant -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf &
# dhclient wlan0 &
修改成下面的内容(其他的地方不要修改,因为这个文件里也包括全功能板的 wifi 配置):
mknod /dev/stpwmt c 190 0
mknod /dev/stpgps c 191 0
mknod /dev/fm c 193 0
mknod /dev/wmtWifi c 194 0
insmod /system/lib/modules/mtk_hif_sdio.ko
insmod /system/lib/modules/mtk_stp_wmt.ko
insmod /system/lib/modules/mtk_stp_uart.ko
insmod /system/lib/modules/mtk_stp_gps.ko
insmod /system/lib/modules/mt6620_fm_drv.ko
insmod /system/lib/modules/mtk_fm_priv.ko
insmod /system/lib/modules/mtk_wmt_wifi.ko WIFI_major=194
insmod /system/lib/modules/wlan.ko
chmod 0666 /dev/stpwmt
chmod 0666 /dev/stpgps
chmod 0666 /dev/fm
chmod 0666 /dev/wmtWifi
chmod 0660 /dev/ttySAC0
chmod 0666 /dev/gps
/system/bin/6620_launcher -m 1 -b 921600 -n /system/etc/firmware/mt6620_patch_hdr.bin -d
/dev/ttySAC0 &
sleep 1
echo 1 > /dev/wmtWifi
wpa_supplicant -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf & dhclient wlan0 &
修改完成以后保存并退出,然后使用命令“vi /etc/wpa_supplicant.conf”,如下图:
将会打开 wpa_supplicant.conf 文件,如下图:
在这个文件里根据您的路由器来设置里面的无线网络名称,密码,网络类型,修改完成后保存并退出。
也可以使用命令来配置无线网络的名称和密码:
wpa_passphrase XXX "YYY " >> /etc/wpa_supplicant.conf
其中 XXX 代表您的 WiFI 网络名称, YYY 代表 WPA-PSK 或者 WPA2-PSK 加密的密码。如下图。
然后重启开发板。系统起来后,使用:
wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant.conf -B
命令后,可以看见 wifi 模块上的 led 灯在闪烁。此时查看 ip,如下图。
由上图可知,已经成功连接上无线网络。
95.1.2 全能板wifi 配置
开发板上电启动进入到 Ubuntu 系统后,在开发板的串口里面使用命令“vi /etc/init.d/itop-set”,如下图。
打开 itop-set 文件,把里面的内容:
# insmod /lib/firmware/ath6k/AR6003/hw2.1.1/cfg80211.ko
# insmod /lib/firmware/ath6k/AR6003/hw2.1.1/ath6kl_sdio.ko
# sleep 1
改成下面的内容(其他的地方不要修改,因为这个文件里也包括精英板的 wifi 配置):
insmod /lib/firmware/ath6k/AR6003/hw2.1.1/cfg80211.ko
insmod /lib/firmware/ath6k/AR6003/hw2.1.1/ath6kl_sdio.ko
sleep 1
然后保存并退出,重启开发板就可以在桌面右上角的 wifi 图标来连接无线网络了。
95.2 Ubuntu 文件系统声卡的配置
iTOP-4412 开发板支持的 Ubuntu 系统,声卡应用默认没有打开。本小节介绍如何设置Ubuntu 声卡。
(1)开发板启动运行 Ubuntu 系统,使用网线连接路由器,使用命令“apt-get install vim”安装 vim 编辑器(Ubuntu 默认支持有线网;Ubuntu 自带的 vi 编辑器不支持复制,后面复制部分需要手动输入,如果用户想手动输入也可以不安装 vim 编辑器)。
(2)在控制台输入“vim /etc/hosts”命令打开文件“/etc/hosts”,在所打开界面的第一行最后添加“iTOP4412-ubuntu-desktop”, 保存退出。
(3)命令行输入“vim /etc/init.d/itop-set”,可以看到四条命令
amixer cset numid=7 127
amixer cset numid=8 1
amixer cset numid=40 1
amixer cset numid=45 1
将这四条命令复制到控制台依次执行。
(4)然后右键点击需要播放的音乐,“右键”→“ Open With Rhythmbox Music Player”,之后可能会弹出来需要安装什么补丁或者什么其他的东西,按照提示默认安装。
(5)由于 Ubuntu 在 root 用户下,为了安全考虑默认是关闭了声音系统的。因为 root 登录后 pulseaudio 没有启动,所以要先启动它,需要将 root 加到 pulse 和 pulse-access 组,在控制台使用以下命令启动 pulseaudio:
sudo usermod -a -G pulse-access root
gpasswd -a root pulse
gpasswd -a root pulse-access
(6)最后编辑“/etc/default/pulseaudio”文件,使用命令“
cp -p /etc/default/pulseaudio /etc/default/pulseaudio.bak
接着使用命令“vim /etc/default/pulseaudio”打开 pulseaudio 文件。
修改 pulseaudio 文件中参数 PULSEAUDIO_SYSTEM_START 修改为 1,参数DISALLOW_MODULE_LOADING 修改为 0。表示允许运行在 system 环境,允许动态加载模块。
重启开发板,声卡就可以正常使用了。
95.3 Ubuntu 扩展 root 目录空间
使用默认的分区和烧写方法,Ubuntu 的 root 目录剩余空间很小。本小节介绍如何修改分区命令来扩展 root 目录。
在对 eMMC 分区时,默认使用的是分区命令是“fdisk -c 0 2700 300 300”,可以将分命令修改为:
fdisk -c 0 2900 50 50
其它烧写步骤不变,烧写完成之后,Ubuntu 从开发板的 eMMC 启动,然后将拷贝到eMMC 中的压缩包“iTOP4412_ubuntu_12.04_for_LCD_20141230.tar.gz”删除,如下图所示。
如上图所示,root 目录可以扩展到 1.7G。
95.4 Ubunt下CAN总线的使用
本文档介绍的是在 Ubuntu 系统环境下 iTOP-4412 的 CAN 实验调试步骤。给用户提供了“can_libs.rar”、“can_libs_more.zip”、“can_tools.zip”和“can_test.zip”压缩包,分别是 can 工具需要的库文件、can 工具二进制文件以及 c 的测试源码。在网盘资料的“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412开发板系统开发资料\iTOP-4412-Ubuntu-CAN总线使用指导文档_V1.0”。
CAN 是 Controller Area Network 的缩写,是 ISO 国际标准化的串行通信协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。
1硬件连接
作者测试 CAN 总线,使用的是 1 块 iTOP-4412 开发板,一块迅为的 CAN 总线模块, 排母一段接开发板“GPIO/CAN/485”,CAN 模块的+连接+,-连接-,如下图所示:
全能版的 can 如下图:
精英版的 can,如下图所示,精英版需要 CAN 模块,内核也需要配置:
2内核配置
如果用户使用的是全能版,则可以直接跳过这一小节,如下图所示,作者使用的是默认的精英版内核,使用命令“ls /dev/rc522”,可以看到 RFID 的驱动,那么这个配置的内核是不能支持 can 的,必须去掉 rc522 添加 can 的驱动,重新烧写 Ubuntu 的支持 can 的内核。
请注意:如果用户已经添加了给开发板烧写了 Ubuntu,烧写新的内核,是不需要重新烧写整个 Ubuntu 的,只需要使用 OTG 烧写方式,更新一下内核:
精英版的内核配置如下,如下图所示,作者的开发板已经烧写了 Ubuntu 系统,开发板是scp 的,如果用户是其它型号,则需要使用对应的缺省文件。
使用命令“cp -r config_for_ubuntu_scp .config”配置缺省文件。使用命令“make menuconfig”,进入 menuconfig 配置:
进入
Device Drivers --->
[*] SPI support --->
将“RC522 Module driver support”其去掉,如下图所示:
然后进入
Networking support --->
CAN bus subsystem support --->
CAN Device Drivers --->
将“Microchip MCP251x SPI CAN controllers”配置,这是 can 的驱动,如下图所示:
保存缺省文件,然后“make zImage”命令编译新的内核。通过 fastboot 工具重新烧写编译内核,如下图所示,只需要更新 zImage,其它不要更新。烧写如下图所示:
烧写完毕之后,重新启动开发板,进入文件系统,如下图所示,使用命令“ls /dev/rc522”看不到“rc522”的设备节点。
然后使用命令“ifconfig -a”可以看到 can0:
3 CAN config 工具配置
和文档一起的有 canconfig 工具、库文件和测试程序的压缩包“can_tools.zip”、“can_libs.rar”、“can_libs_more.zip”、“can_test.zip”。
“can_tools.zip”为 canconfig 工具,将其拷贝到开发板 Ubuntu 系统的“/sbin”目录下,并用 chmod 命令将修改权限为 777。
“can_libs.rar”和“can_libs_more.zip”库文件,解压之后将其中的库文件拷贝到开发板 Ubuntu 系统的“/lib”目录下,并用 chmod 命令将修改权限为 777。
“can_test.zip”为编译好的测试程序和源码。
4测试软件的使用
请注意,测试前一定要看面小节的内容。
1保证硬件连接正确,如果是精英版则需要有对应的模块;
2要保证使用“ifconfig -a”出现 can0;
3canconfig 的工具等要配置好,并修改权限,对应的库文件也要拷贝和修改权限。
最后再介绍一下如何使用测试程序。
压缩包“can_test.zip”中的“can_test”为编译好的二进制文件,can_test.c 为测试源码,作者使用的是 arm-2009q3 编译器编译的源码。
将“can_test”拷贝到开发板上,修改权限,然后使用命令“./can_test -r can0”,这样就处于接收状态。
can 设备另外一端发过来数据,可以接收到,如下图所示,作者另外一端使用的是迅为另外一款开发板的 Ubuntu 系统。
发送命令“./can_test -s can0”截图,作者发送了三次,如下图所示:
4412 开发板接收,如下图所示,4412 开发板接收到三组数据。
另外一端处于接收状态,4412 开发板发送命令“./can_test -s can0”如下图所示。
另外一端接收,如下图所示:
至此,4412 的 Ubuntu 系统 can 的测试完毕。
95.5 Ubuntu移植USB-3G上网卡
本文档将介绍如何移植华为 E261 WCDMA 12d1:1446USB 上网卡到 4412 开发板Ubuntu 系统。
配套资料在网盘资料的“iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412开发板系统开发资料\iTOP-4412-Ubuntu-usb3G上网卡移植”。
95.5.1 内核配置
配置内核以下选项
Device Drivers >
USB support
<*>USB Mass Storage support
[*]USB Mass Storage verbose debug
<*>Realtek Card Reader support
<*>Datafab Compact Flash Reader support
如下图:
和
DeviceDrivers-->
[*]USB support-->
<*>USB Serial Converter support-->
[*]USB Generic Serial Driver
<*>USB driver for GSM and CDMA modems
以及
Device Drivers >
Network device support>
PPP***全选
如下图所示
然后编译内核,烧写到开发板。
移植应用层的四个工具,它们互相有依赖关系,为了方便编译,将它们拷贝到同一目录并解压,如下图所示。
95.5.2 编译 libusb-0.1.12
进入文件夹 libusb-0.1.12,执行以下命令。
./configure --host=arm-none-linux-gnueabi --prefix=$(pwd)/../ install
它将设置使用的编译器,并且指定 make install 后生成目录的路径为上级目录下的 install 文件夹,结果如下图所示,
然后执行“make” 以及“make install”,可以看到在上级目录产生了“ install”文件夹,如下所示。
95.5.3 编译 usb-modeswitch-1.2.6
编译该工具需要使用上一步生成的库文件以及头文件,即 include 以及 lib 文件夹,进入源码文件夹 usb-modeswitch-1.2.6,将 Makefile 改成以下所示内容。
以及
保存并编译,输入 make 指令,如下图所示。
95.5.4 编译 usb-modeswitch
进入该源码文件夹的 usb_modeswitch.d 目录,如下图所示。
使用命令“vim 12d1:1446”打开文件,并修改成以下内容。
# Huawei, newer modems
DefaultVendor= 0x12d1
DefaultProduct= 0x1446
TargetVendor=0x12d1
TargetProductList="1001,1406,140b,140c,1412,141b,1432,1433,1436,14ac"
CheckSuccess=20
MessageContent="55534243123456780000000000000011062000000101000100000000000000"
DisableSwitching=0
EnableLogging=0
如下图所示,
95.5.5 编译ppp-2.4.4
进入源码目录,运行以下命令编译
./configure
make CC=arm-none-linux-gnueabi-gcc
编译到此完成,可以看到在 pppd 文件夹生成了 pppd 工具,在 chat 文件夹生成了 chat工具,如下图所示。
编译工作到此完成,接下来分别将每一步编译得到的工具拷贝到开发板。
(1)将22.5.3中install/lib目录下的libusb.so,libusb-0.1.so.4,libusb-0.1.so.4.4.4 拷贝到开发板的/lib 文件夹。
(2)将22.5.3中编译得到的 usb_modeswitch 文件拷贝到开发板的/usr/sbin/目录。
(3)将22.5.4中修改的文件 12d1:1446 拷贝到开发板的/etc/usb_modeswitch.d/目录下。注意到 Windows 与 Linux 的文件命名规则不同,:在 Windows 上会被自动转换成%3A。用户需要先把文件拷贝到开发板上再重命名。重命名操作如下图所示。
(4)将 22.5.5中得到的 pppd 和 chat 工具拷贝到开发板/usr/sbin/目录。
(5)将压缩包提供的脚本 wcdma,wcdma-chat-connect,wcdma-chat-disconnect 拷贝到开发板的/etc/ppp/peers/目录下。
(6)在开发板使用以下指令,建立软连接。
ln /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3
95.5.6 测试
拷贝完成后,将上网卡 E261 插到开发板上,使用命令 lsusb 检查是否识别到上网卡,识别过程需要几秒钟,若成功如下图所示。
等待上网卡闪烁蓝灯,然后输入以下指令
usb_modeswitch -W -c /etc/usb_modeswitch.d/12d1:1446
之后运行压缩包中提供的脚本 pppd_conf.sh,运行耗时大约 20s,设置完成后即可上网,如下图所示。
脚本运行完成之后如下图所示。
可以看到已经可以 ping 通网站。
95.6 Ubuntu手动挂载盘符
烧写 ubuntu 时,如果 Ubuntu 可以启动,但是不显示 tf 卡盘符,则可以参考本文档,手动挂载盘符。
使用本文档,前提条件是之前的烧写步骤按照手册都可以顺利完成。本手册适用迅为4412、4418 和 6818 开发板,但以 6818 的手册截图为例,用户可自己对应步骤,进行后续操作。
在按照手册烧写 ubuntu 系统时,完成下图操作后
使用“df -l”命令查看盘符加载情况时,盘符可能会出现不显示的情况,如下图所示:
但是,查看 dev 下的设备,可以看见盘符存在:
可以通过手动命令加载盘符来解决该问题。先在/media 下新建两个目录,然后挂载。如下图所示:
进入/media/test1 路径下,可以看到压缩包。使用
tar vxf /media/NEW\VOLUME/iTOP4412_ubuntu_12.04_for_LCD_20141230.tar.gz -C ./
命令,解压到当前目录下。
之后的步骤,请继续参考“xx 使用手册”完成。
95.7 Ubuntu开启双声道
4412-开发板-ubuntu12.04 系统默认只开启了一个声道,下面介绍开启双声道的办法(先参考“iTOP-4412-Ubuntu 系统源码-ubuntu 没有声音的解决办法”文档修改配置)。
具体步骤如下:
使用“sudo apt-get install gnome-alsamixer”命令安装 gnome-alsamixer 应用。为确认安装好,再次执行刚才的命令,如下图。
应用程序安装好之后。
在连接开发板的键盘上按“win”键,进入搜索界面。在搜索输入框输入“alsa”可以显示如下图所示应用。
用鼠标点击进入该应用。如下图。(有一个错误提示,不必理会)
按照上图所示,把“Left Boost Mixer LINPUT1”修改为“Left Output Mixer PCM”如下图。可以听见两个声道都有声音了。