Ti AM335X工控模塊的ubuntu系統定制與使用-連載(二)
本內容的驗證使用的盈鵬飛嵌入式CoM-335x核心模塊及評估板EAC-335X,簡要介紹如下:
1. 制作ubuntu 文件系統
在x86平臺使用ubuntu-base-16.04.6-base-armhf.tar.gz鏡像制作ubuntu文件系統,步驟如下:
1、在 Linux PC 主機上安裝模擬器
# sudo apt-get install qemu-user-static
2、準備Ubuntu鏡像
# wget -chttp://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.6-base-armhf.tar.gz
# mkdir console
# sudo tar -xpf ubuntu-base-16.04.6-base-armhf.tar.gz -C console
3、設置dns,為下載package做準備
# sudo cp -b /etc/resolv.conf console/etc/resolv.conf
4、準備qemu
# sudo cp /usr/bin/qemu-arm-static console/usr/bin/
5、切換rootfs目錄
# sudo mount -t proc proc console/proc/
# sudo mount -t sysfs sys console/sys/
# sudo mount --bind /dev/ console/dev/
# sudo mount --bind /dev/pts/ console/dev/pts/
# sudo chroot console
6、更新
# apt update
# apt upgrade
7、安裝所需組件(根據需求安裝)
# apt-get install vim git openssh-server sudo net-tools iputils-ping wireless-tools udev
# apt-get install rsyslog ifupdown ethtool dialog bash-completion
# apt-get install bluetooth-touch bluez
# apt-get install busybox udhcpc
# apt-get install console-setup console-terminus console-data
# apt-get install alsa-utils can-utils tzdata
桌面環境需要安裝以下軟件包:
# apt-get lxde libpam-kwallet4 libpam-kwallet5
# apt-get install xinput-calibrator network-manager
8、配置啟動界面
# update-alternatives --config x-session-manager
9、配置默認登錄界面
# dpkg-reconfigure lightdm
10、配置網絡
# echo auto eth0 > /etc/network/interfaces.d/eth0
# echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
# echo auto wlan0 > /etc/network/interfaces.d/wlan0
# echo allow-hotplug wlan0 >> /etc/network/interfaces.d/wlan0
# echo iface wlan0 inet dhcp >> /etc/network/interfaces.d/wlan0
11、添加系統用戶,并設置密碼,以embfly為例
# useradd -s '/bin/bash' -m -G adm,sudo embfly
# echo embfly:embfly | chpasswd
12、設置主機名
# echo am335x > etc/hostname
# echo "127.0.0.1 localhost am335x" > etc/hosts
# echo "Asia/Shanghai" > /etc/timezone
13、退出
# exit
# sudo umount -lf console/dev/pts
# sudo umount -lf console/dev
# sudo umount console/sys
# sudo umount console/proc
14、制作鏡像
制作ext4鏡像
eMMC存儲的主板,燒寫壓縮后的ext4鏡像,文件后綴為ext4.gz。
# mkdir ?rootfs
# dd if=/dev/zero of=linuxroot.img bs=1M count=4000
# mkfs.ext4 linuxroot.img
# sudo mount linuxroot.img rootfs/
# sudo cp -rfp console/* ?rootfs/
# sudo umount rootfs/
# e2fsck -p -f linuxroot.img
# resize2fs ?-M linuxroot.img
# gzip -9 linuxroot.img
壓制ubi鏡像
nand flash存儲的主板,燒寫UBI鏡像。由于ubuntu鏡像較大,只支持512 MIB以上、頁大小為4096 byte的nand flaah。以壓制512MIB的鏡像為例:
# sudo mkfs.ubifs -F -q -r console/ -m 4096 -e 253952 -c 1980 -o ubuntu16.04.img
# ubinize -o ubuntu16.04.ubi -O 4096 -m 4096 -p 256KiB -s 1024 ubivolume.cfg
注:INI配置文件ubivolume.cfg如下:
# cat ubivolume.cfg
[ubifs]
mode=ubi
image=ubuntu16.04.img
vol_id=0
vol_size=450MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
2??燒寫ubuntu文件系統
COM-335x系列衍生品中, 均板載nand flash或eMMC,在此介紹這兩種存儲器燒寫方法。著手燒寫前,先確認存儲器件類型由于容量、RAM容量,以便決定采用的燒寫方式。一般而言,nand flash容量相對較小,只能燒寫無桌面的環境的ubuntu文件系統;eMMC雖然容量大,但囿于RAM的容量(一般為512MB、最大為1GB),也不能直接燒寫桌面的環境的ubuntu文件系統。選擇合適的燒寫方法,要綜合考慮鏡像大小、存儲器件容量、RAM容量,簡而言之ubuntu鏡像大小要小于RAM與存儲器容量。
2.1? 燒寫UBI鏡像
存儲器為nand flash的EAC-335x,單獨更新UBI鏡像,使用網絡或TF卡加載ubuntu鏡像到RAM,然后在寫入nand flash。特別注意,UBI鏡像的大小要小于RAM與nand flash容量。
1、網絡更新ubuntu鏡像
① 中止u-boot自動啟動
調試串口打印倒計時信息,按下任意鍵中止自動啟動。提示信息如下:
Hit any key to stop autoboot: ?2
② 設置TFTP服務器、主板IP
例如TFTP服務器IP設為192.168.0.115,主板IP設為192.168.0.60
=> setenv serverip 192.168.0.115
=> setenv ipaddr 192.168.0.60
③ 燒寫ubuntu UBI鏡像
例如UBI文件名為:ubuntu16.04.ubi
=> tftp ubuntu16.04.ubi
=> nand erase.part rootfs
=>?nand write $loadaddr rootfs ${filesize}
2、TF卡更新ubuntu鏡像
① 燒寫ubuntu UBI鏡像
例如UBI文件名為:ubuntu16.04.ubi
=> fatload mmc 0 $loadaddr ubuntu16.04.ubi
=> nand erase.part rootfs
=>?nand write $loadaddr rootfs ${filesize}
2.2 燒寫ext4鏡像
存儲器為eMMC的EAC-335x,單獨更新ext4鏡像,使用網絡或TF卡加載ubuntu鏡像到RAM,然后在寫入eMMC。特別注意,ext4鏡像的大小要小于RAM與eMMC容量。
1、網絡更新ubuntu鏡像
① 中指u-boot自動啟動
調試串口打印倒計時信息,按下任意鍵中止自動啟動。提示信息如下:
Hit any key to stop autoboot: ?2
② 設置TFTP服務器、主板IP
例如TFTP服務器IP設為192.168.0.115,主板IP設為192.168.0.60
=> setenv serverip 192.168.0.115
=> setenv ipaddr 192.168.0.60
③ 燒寫ubuntu UBI鏡像
例如UBI文件名為:ubuntu16.04-gui.ext4.gz
=> tftp ubuntu16.04-gui.ext4.gz
=>?gzwrite mmc 1 $loadaddr ${filesize} 0x100000 0x1000000
2、TF卡更新ubuntu鏡像
① 燒寫ubuntu UBI鏡像
例如UBI文件名為:ubuntu16.04-gui.ext4.gz
=> fatload mmc 0 $loadaddr ubuntu16.04-gui.ext4.gz
=>?gzwrite mmc 1 $loadaddr ${filesize} 0x100000 0x1000000
2.3 裸板燒寫
在此,裸板認為是存儲器件未燒寫任何系統鏡像或已經完全擦除存儲器中的鏡像。一般地,使用TF卡裸板燒寫,具體燒寫過程參考《EAC-335X linux系統燒錄手冊》。關于文件系統鏡像命令有以下要求:
當燒寫nand flash時,使用UBI鏡像,文件名為:rootfs.ubi
當燒寫eMMC時,使用ext4鏡像,文件名為:?rootfs.ext4.gz
3 接口功能驗證
應用ubuntu系統提供的軟件環境,驗證EAC-335x主板接口功能。
3.1?ethernet
驗證網絡連接是否正常,以ping 10個數據包僅顯示結果為例:
embfly@am335x:~$ ifconfig -a
embfly@am335x:~$ ping www.kernel.org -I eth0 -c 10 -q
3.2?TF卡
先掛載TF卡,再使用dd指令寫入文件,然后刪除。
embfly@am335x:~$ sudo mount /dev/mmcblk0p1 /mnt/
embfly@am335x:~$ sudo dd if=/dev/zero of=/mnt/file.img bs=1M count=10
embfly@am335x:~$ ls -alh /mnt/file.img
embfly@am335x:~$ sudo rm /mnt/file.img
embfly@am335x:~$ sudo umount /mnt
3.3?音頻
aplay播放wav格式音頻文件,由于聲音過小,播放前先調節音量。驗證codec放音功能,且無雜音。
embfly@am335x:~$ sudo amixer cset name='PCM Playback Volume' 100%,100%;amixer cset name='HP DAC Playback Volume' ?100%,100%
embfly@am335x:~$ sudo aplay wo.wav
3.4 CAN bus
???EAC-335x 只有一路CAN bus,需要連接外部設備驗證收發功能,在此使用USBCAN-II設備,該設備需先在PC安裝CANTest工具,有關USBCAN-II的使用詳細查閱其手冊。
embfly@am335x:~$ ifconfig -a
embfly@am335x:~$ sudo ip link set can0 down
embfly@am335x:~$ sudo ip link set can0 type can bitrate 50000
embfly@am335x:~$ sudo ip link set can0 up
發送:
循環發送標準幀、擴展幀各100幀:
embfly@am335x:~$?for ((i = 1;$i <= 100; i++)) ;do cansend can0 01a#11223344AABBCCDD; cansend can0 1F334455#1122334455667788; done
發送數據
接收:
embfly@am335x:~$ candump can0 &
3.5?USB host?
U 盤讀寫驗證方法與TF卡相同。
embfly@am335x:~$ sudo mount /dev/sda1 /mnt/
embfly@am335x:~$ sudo dd if=/dev/zero of=/mnt/file.img bs=1M count=20
embfly@am335x:~$ ls -alh /mnt/file.img
embfly@am335x:~$ sudo rm /mnt/file.img
embfly@am335x:~$ sudo umount /mnt
圖:U盤寫結果
3.6 UART
基于GUI版本的文件系統可使用cutecom或microcom工具測試,基于console版本的文件系統使用microcom測試。
EAC-335x有7路UART,其中5路為RS232電平(AM335x內部串口),剩余2路為RS485電平(XR20M1172擴展串口)。其設備節點與端口對應關系如下表:
表:UART節點映射關系:
3.6.1 RS232
以/dev/ttyO1為例,使用microcom驗證串口通信功能。首先使用串口收發器連接CN12(COM1)與PC,再在PC執行串口調試助手(或其他工具)、EAC-335x主板執行microcom工具。注意通信設置應當一致。
embfly@am335x:~$ sudo busybox microcom -d 100 -s 115200 /dev/ttyO1
接收:
發送:
在調試串口終端輸入字符,串口調試助手顯示。終端輸入字符無回顯,即輸入“www.kernel.org”只在串口調試助手顯示。
注:ctrl + X退出microcom。
3.6.2?RS485
RS485通信也是用microcom工具,但RS485屬于半工通信方式,在任一時刻只能收或發。由于microcom不能切換收發,只測發送,以/dev/ttySC0為例:
embfly@am335x:~$ sudo busybox microcom -d 100 -s 115200 /dev/ttySC0
3.7 RTC
RTC斷電后需要外置電源,先安裝紐扣電池。能正常訪問互聯網的情況,從NTP同步時間方便快捷;當不能訪問互聯網,則需要手動設置RTC。
1、NTP同步RTC
embfly@am335x:~$ sudo timedatectl set-timezone "Asia/Shanghai"
embfly@am335x:~$ timedatectl set-ntp true
embfly@am335x:~$ timedatectl status
2、hwclock設置RTC
embfly@am335x:~$ sudo date 011512132021.21;
embfly@am335x:~$ sudo hwclock -w -f /dev/rtc0
embfly@am335x:~$ sudo hwclock -r -f /dev/rtc0