TA的每日心情 | 奋斗 2020-3-25 15:17 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言本指导文档适用开发环境:
; N+ |- F1 M+ c+ ^: b7 _ uWindows开发环境:Windows 7 64bit、Windows 10 64bit
" L- d2 j2 ?6 XLinux开发环境:Ubuntu 14.04.3 64bit9 c3 _( ]* M9 E' Z: c& d B
虚拟机:VMware14.1.14 h" t m! } M. _9 T4 W. E
Kernel:Linux-4.9.65、Linux-RT-4.9.653 P: ^: I* Y' j" v
Linux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05+ }) _- R: {8 T9 I- M/ B: ]7 G
评估板支持通过Linux系统启动卡、eMMC、NAND FLASH三种方式启动。本文档主要演示Linux系统启动卡制作,以及将Linux系统固化到eMMC的方法。将Linux系统固化到NAND FLASH的方法,另见文档。- \7 l4 m& ~' _2 \1 b& [' h6 l
; f& z+ A; }" v7 p+ O6 Z
5 Q1 Y6 H1 I; z% L1.Linux系统启动卡制卡工具包说明1.1制卡工具包版本说明
9 v% ]9 o: {' z: N. }产品资料“4-软件资料\Linux\MakESDboot\”目录下的mksdboot_AA_BB_CC_DD.tar.gz压缩文件是Linux系统启动卡制卡工具包,主要包含U-Boot、Linux内核、设备树镜像文件,以及文件系统压缩包等内容。AA_BB_CC_DD为制卡工具包的版本号,具体版本说明如下:! G% W, ~3 |6 x! D) Z* B& z
- AA: U-Boot发布版本。详细信息请查看“4-软件资料\Linux\U-Boot\”目录下的特性支持说明文件。
- BB:Linux内核发布版本。详细信息请查看“4-软件资料\Linux\Kernel\”目录下的特性支持说明文件。
- CC:文件系统发布版本。详细信息请查看“4-软件资料\Linux\Filesystem\”目录下的特性支持说明文件。
- DD:产品测试程序发布版本。在文件系统下执行“cat /opt/product-test/version.txt”命令可查看具体版本信息。, t9 j, K- z* X9 J4 w2 v! N( T
1.2制卡工具包目录说明
o( u" f- W" _7 b% }打开Ubuntu,将制卡工具包复制到“/home/tronlong/AM335x”工作目录下,进入制卡工具包所在路径将其解压到当前目录。工具包名称需根据实际情况修改。" o4 z, s1 f) D
Host# cd /home/tronlong/AM335x/
& F" ?0 D* o: I( C: J3 \3 s. VHost# tar -xvf mksdboot_21_21_21_14.tar.gz -C .
! A* Q/ B0 D/ M4 p: N% f7 t 8 z$ H- Y- W( f' E
图 1
% d$ _5 c5 ~* r9 }" s s ^% m, i& I$ v e$ P1 o
执行以下命令,查看解压后的制卡工具包具体内容。
4 Y9 E! l1 ^' k, {Host# tree -L 5 mksdboot_21_21_21_148 T/ `) e! q: n2 G
![]()
. c+ ]# W& g' M0 X图 2
& h: j A3 p5 B, _# S4 N9 ~
. n% u$ s0 {- @boot目录
# Y+ I b8 [; z' C( v4 W0 _* `- MLO文件:U-Boot一级启动镜像。
- u-boot.img文件:U-Boot二级启动镜像。
- README.md文件:制卡工具包、U-Boot、Linux内核、文件系统等版本信息说明文件。logo.bmp文件:LOGO图片。( V8 G" X; V7 P$ A% z4 L5 K7 a
filesystem目录
C" }; T+ J( ^+ Y2 [7 I- boot目录:主要包含Linux内核镜像zImage、Linux-RT内核镜像zImage-rt、基础设备树dtb文件、Linux-RT内核模块压缩包等。
- firmware目录:主要包含动态设备树dtbo文件。
- modules目录:主要存放Linux内核模块压缩包。
- rootfs目录:主要存放文件系统压缩包。
- tests目录:主要存放产品测试文件压缩包。
- tools目录:主要存放Shell脚本压缩包。+ A+ y! R0 m, W. E0 ~
mksdboot.sh文件:Linux系统启动卡制作脚本文件。 A/ s3 ~" v; Q" Q& m
( d Y3 s$ X1 ^! @7 }
" }9 ]. [: h" K* r! X$ g% X9 G1.3Linux-RT内核版本Linux系统启动卡制作说明
$ ^) P' ?1 G e) R* v制卡工具包包含Linux内核镜像、Linux内核模块,以及Linux-RT内核镜像、Linux-RT内核模块。默认情况下,制作的是Linux内核版本的Linux系统启动卡。如需制作Linux-RT内核版本的Linux系统启动卡,请按照本小节方法替换内核镜像和内核模块,否则请跳过此小节内容。
, O: u u, f" W; q& ~; c进入制卡工具包“filesystem/boot/”目录,备份Linux内核镜像zImage,并使用Linux-RT内核镜像zImage-rt替换原来的zImage文件。
0 z2 E. a( K* C3 S) ]2 j; H0 hHost# cd filesystem/boot/
# u1 _* c+ E' m) n6 G# ZHost# cp zImage zImage-linux
' O3 g+ u" Y FHost# mv zImage-rt zImage
7 u( x7 L j$ ]8 p![]() 图 30 D, B) a9 [5 C$ ?" h
( r. v; P! w& b# G
将制卡工具包“filesystem/modules/”文件夹备份,并使用“filesystem/boot/modules-rt/”文件夹将其替换,命令如下。
6 { c2 ?& L% @+ X, D a, gHost# mv ../modules ../modules-linux6 v# @3 V- [ w% G3 @
Host# mv modules-rt ../modules6 ~3 c7 V4 F* o& M
. k; n P6 O* m0 m% }
图 48 n5 |; l2 Z6 D0 I$ t! |
9 k! e4 {4 D6 |6 I% p. D: G* C
替换完成后,即可继续参照后续章节方法制作Linux-RT内核版本的Linux系统启动卡。
8 ]& J1 c) z. G A1 G# ?0 P. F9 v
2.Linux系统启动卡制作评估板出厂时,默认提供一张配套的Micro SD卡,此卡为可正常使用的Linux系统启动卡。本章节主要说明Linux系统启动卡的制作方法,可使用配套的Linux系统启动卡,或者使用新的空白Micro SD卡。如下步骤使用配套的Linux系统启动卡进行操作,如使用空白Micro SD卡,步骤类似。, m i! @5 `- Z! T7 q2 F! @3 ^
2.1 Micro SD卡挂载. X- a R) }* m
将Micro SD卡通过读卡器连接到PC机,Ubuntu系统识别后,一般会自动挂载Micro SD卡分区,如下图所示。
1 P) y3 v1 T; z9 |# p( C: x / U' \7 Q+ M0 S9 i% Y/ {
图 5
# e/ x# L! O: V9 Z: k+ ~0 H
, Q# ?8 O, K3 H* P( E- K如果Ubuntu系统没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”进行识别。
' S2 a5 v$ G( a! [6 k5 U5 D9 y* m# ?![]()
) |$ u0 }7 K4 y6 R0 D M图 6( r4 E9 a0 u8 I0 B9 q; K2 S3 G
& K/ B# Q& t6 r; {; o$ o如果没有以上图标或者连接不成功,请尝试如下方法:' ?' B A% e% r, y& l
- 请将Micro SD卡通过读卡器插到PC机USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不兼容USB 3.0。
- 请将Micro SD卡插在PC机上,然后重启Ubuntu,在Ubuntu重启过程中不要取出。Ubuntu系统重启后,存储设备图标会重新出现。
% A9 a! U+ v/ Z+ [+ T) R3 P
6 w" r, X) \. t" V: E; k P2.2Micro SD卡设备节点名确认 `/ C" a3 g. \
执行如下命令,确认Micro SD卡在Ubuntu系统的设备节点名。; k, P# l7 s; e0 x5 S
Host#sudo fdisk -l
5 M' t- A) B% d, @9 j) Y) j. R' c![]()
! b6 F8 s) K, ^图 7
7 e0 A+ d6 I4 i0 g B. Z; J. v6 U( ~
' N: i6 ^3 O6 K8 S; D: Q可以看到Micro SD卡设备节点是“/dev/sdb”,并且有三个分区,分别为sdb1、sdb2和sdb3分区。设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。
. V! L K! ~, R! X$ c' g0 ?8 \& x0 ^" X
2.3PV工具安装
& X; T. e' @! O7 F0 |# o: \PV(Pipe Viewer)是一种基于终端的工具,用于通过管道监测数据的进度。0 X8 m1 W% @9 |$ O/ c3 Y7 J
为了更直观地显示系统启动卡的制作进度,Linux系统启动卡制作过程中会使用到PV工具。请执行如下命令通过网络安装PV工具,如未安装PV工具将会导致系统启动卡制作失败。
4 B3 K( {0 \" R D! t$ J7 j1 XHost#sudo apt-get install pv1 h2 N5 |8 @4 G) n2 w# K, b
![]()
0 I8 q) J0 d+ N- x0 ?2 Z( \+ @" r0 v图 8
. t3 X! w9 o# h# A( j
7 |+ c2 _" Q$ a0 C% c2.4Linux系统启动卡制作
/ O. t& C9 L, q0 N如下为Linux系统启动卡制作命令。命令中“/dev/sdb”为Micro SD卡设备节点,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏,请确认命令中设备节点无误后,再执行命令。& k: O% @0 r8 g% X$ f
Host#sudo ./mksdboot.sh -d /dev/sdb
& }8 I7 E5 }, V p0 T* M$ g! N# K ( `% C( K7 |2 \5 E
图 9: E* V* `( e; c" y. {$ u
- o: b/ J, w* @5 o+ d
根据提示按回车键,进行Linux系统启动卡制作。
7 ]& P. X$ j. [2 A) ]* }![]()
5 @7 c! ^- l& k5 o图 10
+ d) _' S! Y2 S, n3 _- [/ B2 ?9 F& k; `" z
耗时约5~10min,Linux系统启动卡制作完成。同时,系统会打印提示信息,如下图所示。制作时间与Linux系统大小、Micro SD卡容量和接口性能有关。
: A0 P, t7 z' a1 Z5 I . t$ V3 l1 q$ z1 B6 Y
图 11$ G$ g( y1 b, |, w: `% N; r- z
; J W2 H. Y8 ]3 K$ {执行如下命令,可看到新制作的Linux系统启动卡共有BOOT、rootfs和rootfs-backup三个分区。其中BOOT分区为FAT32格式,rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。
8 h4 U9 O- w) C8 V9 X![]()
" ~, o7 x# h; I图 12" h7 E0 S6 T4 L9 Q+ w- ^7 T
, s, e0 t1 i8 L' D0 |/ a1 ^" XBOOT分区:主要存放U-Boot镜像MLO、u-boot.img、LOGO等文件,从制卡工具包boot目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的MLO、u-boot.img文件启动U-Boot。
6 G; r7 J3 ~8 z( \+ N+ _5 o) Drootfs分区:存放文件系统。rootfs分区boot目录主要存放内核镜像、基础设备树文件等文件,从制卡工具包“filesystem/boot/”目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的zImage、tl335x-evm.dtb文件启动内核。# d& Z$ q" R& o4 C# M
rootfs-backup分区:存放文件系统备份文件。系统固化时,将其内容固化到eMMC或NAND FLASH。
5 v0 T) e, V9 v; n" b9 _点击右下角的大容量存储设备图标,选择“Disconnect(Connect to host)”选项(如下图),断开Micro SD卡和Ubuntu的连接,完成Linux系统启动卡制作。& [' v7 t2 O+ U5 ]2 z! J, `
![]()
" H5 X1 G m# `# O图 13
; U* G; }: V, v$ H0 r4 y, V# p/ x5 Y6 L7 N* |
2.5从Linux系统启动卡启动系统
5 x7 u* C/ i: t% D1 ?- J! O评估板断电,将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将拨码开关拨为00010(1~5),此档位为SD卡启动模式。使用Micro USB线连接评估板的USB TO UART3调试串口到PC机,然后将评估板上电启动,串口调试终端会打印以下类似启动信息。# p! R6 ]' K/ a4 n
![]()
* E" i2 F6 t, I5 ]. k& V图 14! g* B+ H2 O+ v! x# F
& S8 k6 u# L# a
![]()
4 K c9 A% U% x" G图 15
0 Q N# o; g9 R' x5 F s: i( L0 D8 A+ [% F2 x
系统启动后会自动登陆root用户,说明使用Linux系统启动卡启动评估板成功。
7 y4 _: y; u0 N Q B! P- i% [# s4 a![]()
6 _. y) p% ?1 j w! b图 16
$ r& |# @# Y5 G# Z! k4 z: Z1 G7 F: O: C3 Q8 @
可执行如下命令查看当前Linux内核版本信息。 ^+ Y( Y& Z1 r$ U. ?6 _/ t
Host#cat /proc/version5 g0 h u" ~0 U# {
![]()
1 m9 U; a+ Q- I3 u Q图 17 Linux内核9 d: ^, ^8 e' n8 n9 |
y( ~ l+ i% O- v1 Y
2 X1 C$ m7 g2 L3 d6 h9 a
图 18 Linux-RT内核% |6 ?5 s$ f5 ?5 ^4 e4 _
0 h# c8 C: Z8 c) y) c# F
3.固化Linux系统(SPI FLASH+eMMC)本小节介绍Linux系统固化过程,固化过程包含固化U-Boot到SPI FLASH和固化文件系统到eMMC。固化成功后,评估板从SPI FLASH启动U-Boot,然后从eMMC加载内核、设备树和文件系统。
# ?1 x' P0 @4 _/ c3 I: P
: _/ p0 Q% p1 M. q+ S$ z3.1挂载信息和SPI FLASH分区说明2 U) q4 O3 G, O0 g* m* ^+ F. f
进入评估板系统后执行如下命令,分别查看系统启动卡和eMMC挂载详细信息,以及SPI FLASH分区信息。& J3 [% y! G& z. Z
Target#df -h7 q4 n& R8 V. { m
Target#cat /proc/mtd: P1 C/ I% j7 u& S+ I
6 {, `% {6 h3 r3 T. S7 Z: J7 U
图 197 S- H6 D3 q2 S- y6 {3 X
2 [3 B" B Y1 [3 n9 j# y f
表 1' u+ ?2 c9 f0 J! i
Linux系统启动卡
I, c5 V; ?1 }! M. ^! | | BOOT分区
$ h, g& T/ H2 \' V. s" i) R | 设备节点:/dev/mmcblk0p1: ?! j1 E3 j! c1 E1 n' K' r
| 挂载路径:/run/media/mmcblk0p1$ _" u# q6 n. J$ [ {
| rootfs-backup分区; w8 J3 _/ G0 F
| 设备节点:/dev/mmcblk0p3
' y' m# B, M& k- \- R | 挂载路径:/run/media/mmcblk0p3: d; {; s5 i* w
| eMMC设备
0 U2 E4 n$ l- L; u; z1 @5 j | BOOT分区
4 i; ~$ ?5 D% z7 ] | 设备节点:/dev/mmcblk1p10 j# I, L6 I9 p2 ~
| 挂载路径:/run/media/mmcblk1p1
: c$ g1 t! M- S2 W7 ~ | rootfs分区
+ p8 w) [4 ~& |- s3 }6 Q | 设备节点:/dev/mmcblk1p2
" V. m* S, ?4 h | 挂载路径:/run/media/mmcblk1p2
# G. E/ W/ b D; P, I( p) ? | data分区(用户分区)
8 k! v- E3 e6 M) P: }( T | 设备节点:/dev/mmcblk1p3& e* X$ q6 X+ C0 x5 u$ \& i @5 x
| 挂载路径:/run/media/mmcblk1p3% F5 z7 ~+ G$ n0 s2 ~, g& N) I8 ^
| SPI FLASH
! p/ H1 ~9 F* v3 |, H | MTD0
; ^ R. |4 h0 P& u z# d N) w | spi.spl:存放U-Boot第一阶段启动文件MLO* M6 C3 w) s [$ `' L
| MTD1/ x8 D& z+ u4 V2 @
| spi.u-boot:存放U-Boot第二阶段启动文件u-boot.img* Q0 t& J% ^4 g+ K% u% s$ B8 [
| MTD2: g7 Y1 ^+ l8 S! y# l9 `
| spi.env:存放环境变量
: ~3 S& G1 s, _6 ?7 _! L | MTD3% a2 n! z+ T0 i+ U+ f
| spi.devicetree:存放基础设备树文件(暂未使用) {+ s% ~* t0 T/ I$ s9 D K
| MTD44 e0 a8 F1 D+ Q* j& I: U3 Q
| spi.kernel:存放内核镜像(暂未使用)
+ j9 y: w1 e4 ?7 W2 T | : _* c, W- D1 t/ y
V6 V, |, i& F+ N3.2固化Linux系统
1 W" U% M; {7 \" b& c5 W" E8 p6 cLinux系统启动卡制作时,已将系统固化的脚本文件mkemmcboot.sh复制到了Linux系统启动卡文件系统的“/opt/tools/make-system”目录下。
5 b3 ?( S1 x4 e' Z1 b7 ~; y9 W6 c![]()
2 _+ N* K. T/ L2 r+ x! P图 20
6 M+ V' u. H6 T! m! w) e
) ^' x2 q) I0 _/ O执行如下命令进行一键固化。
/ l$ C0 m% |4 MTarget#/opt/tools/make-system/mkemmcboot.sh
$ g2 _0 x9 K D2 n4 o' a3 u![]()
/ g' _2 [8 O1 }; b$ R/ Q6 d图 210 G; {0 F! h) E9 d% |2 T
; u& g, y9 v2 R# z; G
脚本会进行如下操作:
* W! d( R, @3 o- 擦除SPI FLASH。
- 将eMMC格式化为BOOT、rootfs和data分区。
- 将Linux系统启动卡BOOT分区中的U-Boot固化到SPI FLASH对应分区。
- 将Linux系统启动卡BOOT分区中的LOGO文件固化到eMMC的BOOT分区。
- 将Linux系统启动卡rootfs-backup分区中的文件系统固化到eMMC的rootfs分区,[url=]包括内核镜像和基础设备树文件。[/url]
# w7 n7 u6 ^) I5 }0 U 用时约3 min, Linux系统固化成功,同时串口调试终端打印提示信息。/ O( t4 d# U( f8 \8 j7 @
备注:脚本会将内核镜像、基础设备树文件固化到SPI FLASH中,实际启动并不会从SPI FLASH中加载内核镜像和基础设备树文件。; H/ T9 i5 P# h
! S; x" @; {* Q8 X
3.3从SPI+eMMC启动系统) g y! W' Y7 ~2 O+ ?* d- M$ e
评估板断电,将Linux系统启动卡从评估板Micro SD卡槽中取出,根据评估底板丝印将拨码开关拨为10010(1~5),此档位为SPI FLASH启动模式。评估板上电,串口调试终端将会打印如下类似启动信息。! y; s( M' R+ l; f, C% X
, c" t9 I) P3 o X( C
图 22
/ ]! f. u5 x( _ ]. F0 G
* y% P" _ h. r![]()
. B8 [* g. `/ I; F图 23
- |! t. O* z4 q- _0 g: a
% ^* O+ v$ {; L+ O# J' ?* r' }( L( g
3.4动态设备树dtbo文件加载方法4 r: [, E* d M2 B* d6 |
评估板设备树文件包含基础设备树dtb文件和动态设备树dtbo文件,Linux系统启动时会自动加载dtb文件,dtbo文件需要在文件系统下进行加载。本章节以tl335x-evm-lcd-overlay.dtbo动态设备树为例,演示动态设备树文件的方法。
: P0 z1 b9 C3 ]! F% ^8 i* d7 uLinux系统启动卡制作时,已将动态设备树dtbo文件拷贝到文件系统的“/lib/firmware/”目录下。将需要加载其他dtbo文件,请将其拷贝到文件系统“/lib/firmware/”目录下。/ F- W5 Q* d2 ]/ U' {' L5 \- N
% e0 f' H$ g3 l
图 24: L. P( q6 j0 Q A" C
# E% o! I8 k$ D3 f, x
文件系统下依次执行如下命令,加载tl335x-evm-lcd-overlay.dtbo动态设备树文件。* ?3 ]% P5 p, ~
Target#mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建% f3 t% I) Q) `. c
Target#mount -t configfs configfs /configfs
\+ c& B; l+ a) W d+ l1 e4 MTarget#mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际需要修改
1 b! G9 s% l/ f6 u# w9 {# vTarget#echo -n "tl335x-evm-lcd-overlay.dtbo" > /configfs/device-tree/overlays/full/path {# v$ U/ Z. y5 e
![]()
( i/ C8 v6 ]! X) L/ P! w0 O$ \% @& E$ [图 25
( p9 F* j/ ^, S1 u; Y! `% a, N( T6 a# Y9 g; L) ?
正常加载动态设备树文件后,系统会打印驱动加载的相关信息,部分驱动也有可能不打印任何信息。可执行如下命令查看动态设备树文件的加载状态。: ~2 q( Y7 r$ s5 g
Target#cat /configfs/device-tree/overlays/full/status
# O' v! [, G! CTarget#cat /configfs/device-tree/overlays/full/path# Z3 d% z* W" ]% v; |% N
1 u) ]6 W4 Y& d) N
图 26/ g O% m: c- T# Z! ~) g
4 v, v4 C: j% R- {6 O; j2 V |
|