TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言本指导文档适用开发环境:: { x; H7 L/ Q; a2 @3 _
Windows开发环境:Windows 7 64bit、Windows 10 64bit
) z. t! c, v( V" t1 H+ `+ cLinux开发环境:Ubuntu 14.04.3 64bit
+ s" j$ |9 q [+ r- T虚拟机:VMware14.1.1 M6 N; ~& a z3 _6 W8 G! ^7 P. b
Kernel:Linux-4.9.65、Linux-RT-4.9.659 x. e5 q- t. K" a+ H8 d
Linux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05
4 L( U+ ?- H4 z: l6 |6 g0 K6 m评估板支持通过Linux系统启动卡、eMMC、NAND FLASH三种方式启动。本文档主要演示Linux系统启动卡制作,以及将Linux系统固化到eMMC的方法。将Linux系统固化到NAND FLASH的方法,另见文档。
5 b J( U. M3 h3 Z# m& J5 Y- n6 s. H! x0 z6 m
' j9 U# r V2 y
1.Linux系统启动卡制卡工具包说明1.1制卡工具包版本说明, t* ]5 [0 U2 r) _
产品资料“4-软件资料\Linux\MakESDboot\”目录下的mksdboot_AA_BB_CC_DD.tar.gz压缩文件是Linux系统启动卡制卡工具包,主要包含U-Boot、Linux内核、设备树镜像文件,以及文件系统压缩包等内容。AA_BB_CC_DD为制卡工具包的版本号,具体版本说明如下:
' A5 @" w8 m7 x* @. d- AA: U-Boot发布版本。详细信息请查看“4-软件资料\Linux\U-Boot\”目录下的特性支持说明文件。
- BB:Linux内核发布版本。详细信息请查看“4-软件资料\Linux\Kernel\”目录下的特性支持说明文件。
- CC:文件系统发布版本。详细信息请查看“4-软件资料\Linux\Filesystem\”目录下的特性支持说明文件。
- DD:产品测试程序发布版本。在文件系统下执行“cat /opt/product-test/version.txt”命令可查看具体版本信息。& p- y: @5 `/ r# L
1.2制卡工具包目录说明
% J" D0 c1 I. o! h9 u! a打开Ubuntu,将制卡工具包复制到“/home/tronlong/AM335x”工作目录下,进入制卡工具包所在路径将其解压到当前目录。工具包名称需根据实际情况修改。0 G* W- @; V! C$ k% N
Host# cd /home/tronlong/AM335x/
7 b4 T1 M0 d+ J+ S: U, rHost# tar -xvf mksdboot_21_21_21_14.tar.gz -C .' g% [2 h e) s
![]()
+ ?* S, X- ~/ A+ q图 1
: z1 m6 Z, i. o
; C/ s v/ |4 K9 F1 v执行以下命令,查看解压后的制卡工具包具体内容。; m4 H' O, v9 q$ x) q/ O
Host# tree -L 5 mksdboot_21_21_21_14
0 _) q e) r: @- Q 0 i0 \ ^0 Y" D
图 2$ Z/ \4 h9 q' p& i. U# s
4 V3 B1 M V, v# b. _6 N c1 u* Aboot目录
" g$ ~. C6 c( K. y" e- MLO文件:U-Boot一级启动镜像。
- u-boot.img文件:U-Boot二级启动镜像。
- README.md文件:制卡工具包、U-Boot、Linux内核、文件系统等版本信息说明文件。logo.bmp文件:LOGO图片。1 {" t1 a3 d" M+ j5 T" r! N
filesystem目录2 I2 n" s \+ q, N2 L e
- boot目录:主要包含Linux内核镜像zImage、Linux-RT内核镜像zImage-rt、基础设备树dtb文件、Linux-RT内核模块压缩包等。
- firmware目录:主要包含动态设备树dtbo文件。
- modules目录:主要存放Linux内核模块压缩包。
- rootfs目录:主要存放文件系统压缩包。
- tests目录:主要存放产品测试文件压缩包。
- tools目录:主要存放Shell脚本压缩包。
+ ]9 v+ U6 B. h: }6 [ mksdboot.sh文件:Linux系统启动卡制作脚本文件。$ M# U6 ]2 ~$ s. U2 L" l& d
; d/ n. u( N% e; A
' V) V; }5 G! ~2 x6 z
1.3Linux-RT内核版本Linux系统启动卡制作说明6 {4 t7 x- J2 T. o3 ~2 j
制卡工具包包含Linux内核镜像、Linux内核模块,以及Linux-RT内核镜像、Linux-RT内核模块。默认情况下,制作的是Linux内核版本的Linux系统启动卡。如需制作Linux-RT内核版本的Linux系统启动卡,请按照本小节方法替换内核镜像和内核模块,否则请跳过此小节内容。
8 A# w2 D ^5 d! {- V1 l3 n# X% p进入制卡工具包“filesystem/boot/”目录,备份Linux内核镜像zImage,并使用Linux-RT内核镜像zImage-rt替换原来的zImage文件。+ A$ h4 d4 J/ N8 K3 p8 B* u" b
Host# cd filesystem/boot/0 s. \% d% R# E$ f
Host# cp zImage zImage-linux* m ]4 ~+ ^7 k, d8 D/ E9 {
Host# mv zImage-rt zImage
) I' N* U% S8 X. z![]() 图 3
- w; s* m3 l* [8 x7 {, ^/ k2 E( a7 v @& h) F% x8 ]" c3 }5 j
将制卡工具包“filesystem/modules/”文件夹备份,并使用“filesystem/boot/modules-rt/”文件夹将其替换,命令如下。
! i' G5 Z0 K7 ~4 `7 \7 wHost# mv ../modules ../modules-linux$ C% ]) c7 M9 o. l
Host# mv modules-rt ../modules
0 L6 t% @' h$ q9 p- I% k![]()
$ A2 Y# n' ?; U4 {0 V) U/ A图 49 |& [2 e1 h- ]" B& C
; W+ D# b0 f1 k% q# O2 g. _替换完成后,即可继续参照后续章节方法制作Linux-RT内核版本的Linux系统启动卡。4 H1 o5 Y+ _' b) x
; j/ N/ B* u( G# X% Q8 Y% h
2.Linux系统启动卡制作评估板出厂时,默认提供一张配套的Micro SD卡,此卡为可正常使用的Linux系统启动卡。本章节主要说明Linux系统启动卡的制作方法,可使用配套的Linux系统启动卡,或者使用新的空白Micro SD卡。如下步骤使用配套的Linux系统启动卡进行操作,如使用空白Micro SD卡,步骤类似。3 m, t2 i7 t2 j0 i/ d4 m
2.1 Micro SD卡挂载) Y+ K c+ W. S" ~# t
将Micro SD卡通过读卡器连接到PC机,Ubuntu系统识别后,一般会自动挂载Micro SD卡分区,如下图所示。
3 E2 d' D5 t. P6 q # K: S, g7 I3 Z( l3 Y
图 52 {) Y, Q Q! a. K9 w
1 I n8 G! o+ o1 e4 p9 F如果Ubuntu系统没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”进行识别。$ M2 _5 ?! k8 W9 [4 \5 l
![]()
g: |* y, a& }0 D2 @图 6) f$ S2 ?! b/ {# o( d
c' D. |- l3 H/ E U/ E如果没有以上图标或者连接不成功,请尝试如下方法:
: m5 ~ F5 X5 O& g- 请将Micro SD卡通过读卡器插到PC机USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不兼容USB 3.0。
- 请将Micro SD卡插在PC机上,然后重启Ubuntu,在Ubuntu重启过程中不要取出。Ubuntu系统重启后,存储设备图标会重新出现。9 n7 F9 ]+ x# Z: s }
1 ]% G t5 p7 ^5 x, x2.2Micro SD卡设备节点名确认
: ^; _, Q7 ?, X执行如下命令,确认Micro SD卡在Ubuntu系统的设备节点名。
9 [7 a1 E, u6 h2 NHost#sudo fdisk -l6 v$ w) D% w' G- S4 Z. D
$ `! q# b, L. R% ]# A6 y
图 7
E* u' ]8 E" {9 r# C
. A2 e% q% f/ I& D可以看到Micro SD卡设备节点是“/dev/sdb”,并且有三个分区,分别为sdb1、sdb2和sdb3分区。设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。
8 s4 R$ e6 `' @# h$ R, _* [4 u0 |) k* y) q9 C
2.3PV工具安装
3 f$ S. G# G. n, x" QPV(Pipe Viewer)是一种基于终端的工具,用于通过管道监测数据的进度。
/ U ?2 C+ c, p8 n2 x为了更直观地显示系统启动卡的制作进度,Linux系统启动卡制作过程中会使用到PV工具。请执行如下命令通过网络安装PV工具,如未安装PV工具将会导致系统启动卡制作失败。
. R2 G3 o3 _& J6 q7 n0 ~: [Host#sudo apt-get install pv9 s0 `( B; V& s0 D0 Q
+ b$ v( a+ N) e
图 8) J+ W5 [, o7 S4 D& R9 A
& J- o9 L; ]1 x2.4Linux系统启动卡制作6 g. X9 I& m& _3 d1 S* r
如下为Linux系统启动卡制作命令。命令中“/dev/sdb”为Micro SD卡设备节点,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏,请确认命令中设备节点无误后,再执行命令。! ]+ x, _7 F4 i) i
Host#sudo ./mksdboot.sh -d /dev/sdb
' I' y; l3 O) N![]()
. ~2 h% M! `7 Y; a# L图 9) f) z! B+ h0 k4 P' W0 x+ j
]6 R% a, o3 Q* W$ X( u3 v0 y
根据提示按回车键,进行Linux系统启动卡制作。1 e) M' l3 Q0 g: A g" S
![]()
3 |2 @( u: r a$ C! h图 10
4 Q3 |4 `) S$ Y: j2 \6 H; g7 B
# ^% N# V4 N. O& t( `$ {2 A耗时约5~10min,Linux系统启动卡制作完成。同时,系统会打印提示信息,如下图所示。制作时间与Linux系统大小、Micro SD卡容量和接口性能有关。
- B4 _5 J/ s' a8 z ' H5 e3 p* n6 ]/ M
图 11
0 j- Q: P6 I ^7 {) I) L2 }9 ]8 e6 G# X7 w# u
执行如下命令,可看到新制作的Linux系统启动卡共有BOOT、rootfs和rootfs-backup三个分区。其中BOOT分区为FAT32格式,rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。7 W+ W% S3 j f9 u* E
![]()
, \/ W8 _+ D& g& E* C1 X* M图 12" L' o$ L/ Y8 v
x, ~' e6 D- W% S7 M
BOOT分区:主要存放U-Boot镜像MLO、u-boot.img、LOGO等文件,从制卡工具包boot目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的MLO、u-boot.img文件启动U-Boot。
/ @* ?4 ?+ O( D! q: B" F7 Zrootfs分区:存放文件系统。rootfs分区boot目录主要存放内核镜像、基础设备树文件等文件,从制卡工具包“filesystem/boot/”目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的zImage、tl335x-evm.dtb文件启动内核。
- [1 K% `' b0 M" W8 F) a- Z* Arootfs-backup分区:存放文件系统备份文件。系统固化时,将其内容固化到eMMC或NAND FLASH。
' [# w# H8 @8 w3 v+ z' I% n7 K点击右下角的大容量存储设备图标,选择“Disconnect(Connect to host)”选项(如下图),断开Micro SD卡和Ubuntu的连接,完成Linux系统启动卡制作。
; {: [7 b% c: y- `. U5 K![]()
5 p) n6 p" A3 {3 m' |# W# E2 [图 13
1 N% k+ m3 ?5 |* H1 t5 a v0 U' m4 p- D( w2 ]/ p1 }: L' P
2.5从Linux系统启动卡启动系统
7 ^, u2 e1 D; c f5 N0 d% n评估板断电,将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将拨码开关拨为00010(1~5),此档位为SD卡启动模式。使用Micro USB线连接评估板的USB TO UART3调试串口到PC机,然后将评估板上电启动,串口调试终端会打印以下类似启动信息。- Q6 H/ N Y1 X/ I" ^( ]# u+ s: _
, X# e `3 M0 X0 R9 {: B5 z' v
图 14
* w1 o. q8 w6 `% Z8 @' o7 u% m6 L' P' @$ a& M1 j8 {( U: b3 l
![]()
6 E+ Y. {5 @6 ^2 p图 15
U* s3 @! \* e& v ?6 g( v2 P7 X( U% [% ^
系统启动后会自动登陆root用户,说明使用Linux系统启动卡启动评估板成功。* A/ e( [# U7 g
![]()
8 }: {5 |) ]' Z5 `, a图 160 E( O; R e; w* N& T# o. t0 n
. K6 I7 D. Q% a$ P
可执行如下命令查看当前Linux内核版本信息。: n# ?, t/ |; K+ V: K
Host#cat /proc/version
. L4 F3 S! ^% C. V0 P. ^ 0 ?* Q1 L. w) U
图 17 Linux内核
$ h5 k+ `, u* A* p' ]" p
; C9 F9 n% ^7 D% L5 `; s![]()
?4 u$ ?/ C* f$ g: b4 z4 l图 18 Linux-RT内核2 q& ^( T9 v+ N6 e0 X
0 D, q0 s+ a/ U3 P# [: P( k3.固化Linux系统(SPI FLASH+eMMC)本小节介绍Linux系统固化过程,固化过程包含固化U-Boot到SPI FLASH和固化文件系统到eMMC。固化成功后,评估板从SPI FLASH启动U-Boot,然后从eMMC加载内核、设备树和文件系统。
1 k# T1 u# u! j( l n7 Q- r _, j+ G- ~& F1 I
3.1挂载信息和SPI FLASH分区说明% i8 }' y& q1 V& Q' Z5 ]( q
进入评估板系统后执行如下命令,分别查看系统启动卡和eMMC挂载详细信息,以及SPI FLASH分区信息。
8 k) P$ ], X/ ?8 _Target#df -h
2 h. h, Q N0 J7 o; t* q# TTarget#cat /proc/mtd j8 V- U2 I$ M4 i% Q' [+ v
. H! o6 A1 p7 u" \: Z* V
图 196 H B. \- V, s- G
# N9 J' f4 c9 A- X3 k+ K+ W0 ]; r
表 1
* F- d, d2 }/ H! N. b- h% \6 F0 ALinux系统启动卡5 F. V; [# y( ?/ @
| BOOT分区% N0 N% z* o9 z
| 设备节点:/dev/mmcblk0p1! a/ B y8 t5 q" u; G6 N
| 挂载路径:/run/media/mmcblk0p1+ t6 W4 [/ Q% O
| rootfs-backup分区
( ]* o: \, \ M, z: i- Z | 设备节点:/dev/mmcblk0p3% z( T X3 A# J. y& m$ D+ ~
| 挂载路径:/run/media/mmcblk0p3
s' S* J- ]9 L4 c. e! J& j | eMMC设备
' G8 |; u* p8 z |5 O" F. ]6 C- L | BOOT分区
& n0 L, K1 Y1 }0 I ~0 o+ v& ? | 设备节点:/dev/mmcblk1p1
6 p7 ?% A2 j- r8 S | 挂载路径:/run/media/mmcblk1p1$ q/ r- [! [4 f% L
| rootfs分区. A. ]* X' @& W) b! u# p# ?+ b; E
| 设备节点:/dev/mmcblk1p2
8 j% s# j Z! S# F+ Z1 M& h( \& | | 挂载路径:/run/media/mmcblk1p2
; B7 ?, f& T" o% ~8 h0 x# ` ~ | data分区(用户分区)+ c. h. b9 m7 f6 m- v
| 设备节点:/dev/mmcblk1p3
" e8 |% L" H% M( J | 挂载路径:/run/media/mmcblk1p32 G/ `2 R! E8 C6 L, E
| SPI FLASH
0 b: D2 g' T! U2 @ | MTD0, ]* m3 j; Q3 a7 t
| spi.spl:存放U-Boot第一阶段启动文件MLO
5 S# {6 S& C) v2 Q7 I6 L( T | MTD1 s: Q' J4 ~9 J# j O6 p
| spi.u-boot:存放U-Boot第二阶段启动文件u-boot.img7 E# f; T% I$ b6 D, T
| MTD2 e: @* G. {. O8 i2 D
| spi.env:存放环境变量" u5 R7 E. {" @: G! J1 c ^
| MTD30 M' h5 x# ?. h
| spi.devicetree:存放基础设备树文件(暂未使用) P0 }5 _: Y4 q) d, P
| MTD4
. O* I/ X9 l z, D E8 R4 G- q* t | spi.kernel:存放内核镜像(暂未使用)0 S5 N- |' S& F$ S1 G
|
1 P8 V2 Q* k! @# q1 ~+ W( g4 W
9 f1 L$ s8 r! F* R0 o/ U3.2固化Linux系统
! B( m$ a! u Y- x( y u# P; P R3 ILinux系统启动卡制作时,已将系统固化的脚本文件mkemmcboot.sh复制到了Linux系统启动卡文件系统的“/opt/tools/make-system”目录下。+ c0 z4 N; p2 o/ l( K
![]()
6 o2 {' I6 s' _" F图 20
' K) |; _2 i& ]- A5 z3 y' c! L4 e
' q% H5 @( i8 U执行如下命令进行一键固化。% _+ |% D R; j- g) ?6 q, ^
Target#/opt/tools/make-system/mkemmcboot.sh
" L6 C" U" P% d7 s. V! ] m9 t , S- E% x( r. H1 z4 f- |$ j( J0 c% W
图 21) ~' Q" l& u0 o# C
# b3 a9 N0 Q5 Z# I* K( {脚本会进行如下操作:
5 T; m0 V$ v' N! X- 擦除SPI FLASH。
- 将eMMC格式化为BOOT、rootfs和data分区。
- 将Linux系统启动卡BOOT分区中的U-Boot固化到SPI FLASH对应分区。
- 将Linux系统启动卡BOOT分区中的LOGO文件固化到eMMC的BOOT分区。
- 将Linux系统启动卡rootfs-backup分区中的文件系统固化到eMMC的rootfs分区,[url=]包括内核镜像和基础设备树文件。[/url]" j# W0 B) ~/ x: ~
用时约3 min, Linux系统固化成功,同时串口调试终端打印提示信息。# @; D* o+ h+ P2 }- o
备注:脚本会将内核镜像、基础设备树文件固化到SPI FLASH中,实际启动并不会从SPI FLASH中加载内核镜像和基础设备树文件。/ e3 H" A, S# U2 R3 G; ]- E/ e
, i; V& H8 K/ q: |( H2 l
3.3从SPI+eMMC启动系统5 f3 n- R$ ~9 K; t, K# P6 T0 O
评估板断电,将Linux系统启动卡从评估板Micro SD卡槽中取出,根据评估底板丝印将拨码开关拨为10010(1~5),此档位为SPI FLASH启动模式。评估板上电,串口调试终端将会打印如下类似启动信息。; O& V' f3 a3 I/ D* |' e1 m Q2 `
![]()
0 n/ r$ q4 k6 ~2 ~2 M3 |图 22
; }# @& L1 l b- c, x0 o @4 `2 T
![]()
9 Q. @( \" o# t/ ~- N4 D: s图 23
! O# {) w& h$ R- y2 T/ C7 e2 a9 k% x) i
8 J7 G" | f4 h5 ]! H# Q
3.4动态设备树dtbo文件加载方法; Z# k2 |' f' G d' o. {% I
评估板设备树文件包含基础设备树dtb文件和动态设备树dtbo文件,Linux系统启动时会自动加载dtb文件,dtbo文件需要在文件系统下进行加载。本章节以tl335x-evm-lcd-overlay.dtbo动态设备树为例,演示动态设备树文件的方法。
- P/ [! C+ ~3 B5 V# `* @3 |Linux系统启动卡制作时,已将动态设备树dtbo文件拷贝到文件系统的“/lib/firmware/”目录下。将需要加载其他dtbo文件,请将其拷贝到文件系统“/lib/firmware/”目录下。
7 Q* a/ U' f/ Q 6 f7 S3 y$ y( O: p
图 24/ N# C% {6 n% B: [ o' V
5 `2 V2 s" h* q. V) ~/ T3 J
文件系统下依次执行如下命令,加载tl335x-evm-lcd-overlay.dtbo动态设备树文件。# w& w% x$ y: [
Target#mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建8 C7 e! X+ |. g8 r
Target#mount -t configfs configfs /configfs
, g5 U. H+ ^- P' B, ]Target#mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际需要修改
' z4 |& o0 N3 J- x+ `2 v: N5 bTarget#echo -n "tl335x-evm-lcd-overlay.dtbo" > /configfs/device-tree/overlays/full/path
2 _- ]& [9 \! h& g![]()
& p2 B0 E8 ^1 j2 {5 q3 P图 25
( I+ F4 |) d) b; }. O+ s
! u. H- R* F* [; t% c正常加载动态设备树文件后,系统会打印驱动加载的相关信息,部分驱动也有可能不打印任何信息。可执行如下命令查看动态设备树文件的加载状态。' t6 F/ r1 i' B6 y! J! I# u
Target#cat /configfs/device-tree/overlays/full/status0 c1 _4 r6 c& i8 `+ m; ]: `
Target#cat /configfs/device-tree/overlays/full/path
: x. M5 N1 E2 _: D1 F1 n" t0 C g , r+ m% ?$ F2 g: w8 L4 L" @' [
图 26* d6 B' \2 e T
9 ?7 V; r+ j. O$ Z3 \/ J5 e/ |
|
|