TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言本指导文档适用开发环境:" ]2 W3 [0 g1 h% d
Windows开发环境:Windows 7 64bit、Windows 10 64bit
$ `# X( z; n7 b6 a, d0 a, z PLinux开发环境:Ubuntu 14.04.3 64bit
( Z$ x& m: h. n$ C虚拟机:VMware14.1.1
, o7 O2 I l1 l# m: NKernel:Linux-4.9.65、Linux-RT-4.9.65& c7 }3 B' H) m
Linux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05
% Y9 |0 m0 M% i2 ~/ h7 S评估板支持通过Linux系统启动卡、eMMC、NAND FLASH三种方式启动。本文档主要演示Linux系统启动卡制作,以及将Linux系统固化到eMMC的方法。将Linux系统固化到NAND FLASH的方法,另见文档。
) ]# y0 h8 W, s3 A/ p& C9 F9 N- }# L6 j; F2 E
' Z4 F9 P& H9 V1.Linux系统启动卡制卡工具包说明1.1制卡工具包版本说明# c3 ]( {6 ^" [0 ]& z% j. y
产品资料“4-软件资料\Linux\MakESDboot\”目录下的mksdboot_AA_BB_CC_DD.tar.gz压缩文件是Linux系统启动卡制卡工具包,主要包含U-Boot、Linux内核、设备树镜像文件,以及文件系统压缩包等内容。AA_BB_CC_DD为制卡工具包的版本号,具体版本说明如下:% T: P8 ?! c& k8 m# ~ I
- AA: U-Boot发布版本。详细信息请查看“4-软件资料\Linux\U-Boot\”目录下的特性支持说明文件。
- BB:Linux内核发布版本。详细信息请查看“4-软件资料\Linux\Kernel\”目录下的特性支持说明文件。
- CC:文件系统发布版本。详细信息请查看“4-软件资料\Linux\Filesystem\”目录下的特性支持说明文件。
- DD:产品测试程序发布版本。在文件系统下执行“cat /opt/product-test/version.txt”命令可查看具体版本信息。
q/ E }5 @" h 1.2制卡工具包目录说明) V8 O( Z/ E9 x4 `% j2 U7 F
打开Ubuntu,将制卡工具包复制到“/home/tronlong/AM335x”工作目录下,进入制卡工具包所在路径将其解压到当前目录。工具包名称需根据实际情况修改。
, j3 G8 W4 r3 N" o8 V: Y- P4 CHost# cd /home/tronlong/AM335x/
6 P1 u: `/ Y1 @- k! j5 L: mHost# tar -xvf mksdboot_21_21_21_14.tar.gz -C ./ ~& X6 q8 B$ t$ `( a, M
![]()
6 F |$ c- K" r1 Y5 s+ u$ L/ `图 1/ u) u+ R1 U1 }2 r, o
8 P. w0 h4 f) [: j' W( V; K执行以下命令,查看解压后的制卡工具包具体内容。
- O- x9 t4 o. z W% I% o& {; JHost# tree -L 5 mksdboot_21_21_21_14
5 x [7 y; S8 `8 D+ d5 V6 p @2 n- ]/ c( m
图 27 W! Q% g! F! e) T
, d- o a' \ X$ {. g' x
boot目录" }( x$ I7 O" t
- MLO文件:U-Boot一级启动镜像。
- u-boot.img文件:U-Boot二级启动镜像。
- README.md文件:制卡工具包、U-Boot、Linux内核、文件系统等版本信息说明文件。logo.bmp文件:LOGO图片。7 H& n) T) ?$ |3 g8 B8 T
filesystem目录8 k' ]+ r6 d, U* C$ c+ a
- boot目录:主要包含Linux内核镜像zImage、Linux-RT内核镜像zImage-rt、基础设备树dtb文件、Linux-RT内核模块压缩包等。
- firmware目录:主要包含动态设备树dtbo文件。
- modules目录:主要存放Linux内核模块压缩包。
- rootfs目录:主要存放文件系统压缩包。
- tests目录:主要存放产品测试文件压缩包。
- tools目录:主要存放Shell脚本压缩包。
, Z* H f' l/ z mksdboot.sh文件:Linux系统启动卡制作脚本文件。
# v( }( }0 N4 f! |
/ @$ g, A5 ~+ S4 F2 H/ Z$ B% g* _! z3 M- O5 Y' G* \
1.3Linux-RT内核版本Linux系统启动卡制作说明- ?1 i- Z- Q, L& k R
制卡工具包包含Linux内核镜像、Linux内核模块,以及Linux-RT内核镜像、Linux-RT内核模块。默认情况下,制作的是Linux内核版本的Linux系统启动卡。如需制作Linux-RT内核版本的Linux系统启动卡,请按照本小节方法替换内核镜像和内核模块,否则请跳过此小节内容。
0 _) S7 @* G/ Z# \进入制卡工具包“filesystem/boot/”目录,备份Linux内核镜像zImage,并使用Linux-RT内核镜像zImage-rt替换原来的zImage文件。: O) d& M) `* T0 R! Q
Host# cd filesystem/boot/- f- u( N0 p" {* P. ?1 f2 _
Host# cp zImage zImage-linux
) B! R9 }" t7 z* o8 O; S6 X) ]2 X5 z" uHost# mv zImage-rt zImage" p! k6 g% E U1 r, o
![]() 图 36 g/ E" n4 ^2 I# V' O! |
1 z V, @; o. F& C
将制卡工具包“filesystem/modules/”文件夹备份,并使用“filesystem/boot/modules-rt/”文件夹将其替换,命令如下。& B% F& f$ u$ T$ l0 ~* q& y
Host# mv ../modules ../modules-linux
- a' y O) ^2 ?9 u& h; qHost# mv modules-rt ../modules' b* p! C; S L7 J( P; v) t4 _! A
) \* H3 G$ n& d9 O; Z
图 4
) ` v5 }) X8 \" |6 y
, d1 ^4 R- M8 i5 b8 p- T3 m替换完成后,即可继续参照后续章节方法制作Linux-RT内核版本的Linux系统启动卡。
A/ t% p4 J. v. c0 Y% s4 A1 v: j: b' I
2.Linux系统启动卡制作评估板出厂时,默认提供一张配套的Micro SD卡,此卡为可正常使用的Linux系统启动卡。本章节主要说明Linux系统启动卡的制作方法,可使用配套的Linux系统启动卡,或者使用新的空白Micro SD卡。如下步骤使用配套的Linux系统启动卡进行操作,如使用空白Micro SD卡,步骤类似。3 C5 X; Z2 m% ]5 o$ M
2.1 Micro SD卡挂载
& c/ t' u1 @2 a; v# p& r1 C将Micro SD卡通过读卡器连接到PC机,Ubuntu系统识别后,一般会自动挂载Micro SD卡分区,如下图所示。
4 o5 a. b. R& W! ?4 ~: N) O+ P 6 J: s9 x' O: x
图 50 F7 k2 u& H1 E' P% @
' C" z6 o( S4 V _3 i( z( _如果Ubuntu系统没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”进行识别。: j# E" B0 D# Z, |! d! p4 D1 f9 G4 L; d
![]()
- W5 [/ N# K5 ]7 b: h" C4 X+ \+ A图 6
: W. A( z( \0 k/ W* j$ ?
6 K. {9 T4 S2 f* c8 G如果没有以上图标或者连接不成功,请尝试如下方法:& f! l( ?8 w& C7 u0 D7 N
- 请将Micro SD卡通过读卡器插到PC机USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不兼容USB 3.0。
- 请将Micro SD卡插在PC机上,然后重启Ubuntu,在Ubuntu重启过程中不要取出。Ubuntu系统重启后,存储设备图标会重新出现。& O2 g! l4 N2 ]
, K! H+ E! {+ X. ?% Z, B2.2Micro SD卡设备节点名确认% z- \0 p+ E" \! R+ L
执行如下命令,确认Micro SD卡在Ubuntu系统的设备节点名。
; i- u5 u' f9 `( W5 ?5 `8 oHost#sudo fdisk -l( D8 u0 l/ ^) g* s
![]()
; I( v. q! a E% u* I) o- e# Z图 7& D: h" e: i4 U5 v
) L! A% v$ | `3 L2 L0 A4 Z( J1 {, G
可以看到Micro SD卡设备节点是“/dev/sdb”,并且有三个分区,分别为sdb1、sdb2和sdb3分区。设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。
8 s8 z" A( {5 w' f. y5 y/ A' R/ Z& e$ G: ?+ c6 X
2.3PV工具安装; u% ]! N. O0 k, D Y
PV(Pipe Viewer)是一种基于终端的工具,用于通过管道监测数据的进度。
0 F/ H, `& g7 F' y为了更直观地显示系统启动卡的制作进度,Linux系统启动卡制作过程中会使用到PV工具。请执行如下命令通过网络安装PV工具,如未安装PV工具将会导致系统启动卡制作失败。; y* E6 U6 L# _6 F, q. }6 ?. M
Host#sudo apt-get install pv
6 ] X) t; ^9 t; T/ X) \% n2 L ) e; T, T+ S u6 c: N
图 8
m" m/ }+ n' L6 y1 K
/ D/ U9 g9 I6 _5 B! \8 `+ [! l2.4Linux系统启动卡制作" F- Z! C: Z2 |; d4 T
如下为Linux系统启动卡制作命令。命令中“/dev/sdb”为Micro SD卡设备节点,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏,请确认命令中设备节点无误后,再执行命令。) k6 w$ \/ l) H5 m8 p
Host#sudo ./mksdboot.sh -d /dev/sdb7 y4 S5 F1 `5 y; a
![]()
4 f) ^* j) l- E) h* x& b图 9) p4 B! g" _" g# O4 N; y7 F* [3 ?" |
" A V" V. I2 K8 d
根据提示按回车键,进行Linux系统启动卡制作。; \) J4 S k! M3 |; l) ?
7 n9 R0 a( v) v$ x& o2 S
图 10
7 p# M. }/ b6 z* M/ v8 \ U
: Q1 {# { R$ m, F. b4 Z/ {+ k耗时约5~10min,Linux系统启动卡制作完成。同时,系统会打印提示信息,如下图所示。制作时间与Linux系统大小、Micro SD卡容量和接口性能有关。
; Z( o' `9 w; v0 P' D# x![]()
`7 P' |2 d# T) g$ E图 11
' H; H- E o- W5 u( ?4 B& Z Y( _* o6 l
执行如下命令,可看到新制作的Linux系统启动卡共有BOOT、rootfs和rootfs-backup三个分区。其中BOOT分区为FAT32格式,rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。
4 R' A% Q; L( r& w& K6 R0 x7 ? " x6 Q! L( n8 f8 J$ J$ _
图 12
7 b+ B/ T# J0 h1 J& R Z, y8 }& k7 R9 k- k; Y8 q# M* }4 { g
BOOT分区:主要存放U-Boot镜像MLO、u-boot.img、LOGO等文件,从制卡工具包boot目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的MLO、u-boot.img文件启动U-Boot。: Y- Y2 N" K5 q$ Z+ v- ?
rootfs分区:存放文件系统。rootfs分区boot目录主要存放内核镜像、基础设备树文件等文件,从制卡工具包“filesystem/boot/”目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的zImage、tl335x-evm.dtb文件启动内核。
* G; b/ R% |* N0 x* erootfs-backup分区:存放文件系统备份文件。系统固化时,将其内容固化到eMMC或NAND FLASH。
" N8 r+ j/ E4 s" M3 i" X& s0 X0 f: @点击右下角的大容量存储设备图标,选择“Disconnect(Connect to host)”选项(如下图),断开Micro SD卡和Ubuntu的连接,完成Linux系统启动卡制作。
8 M3 `7 h& v/ D* w0 L) @ * E* f% V$ u! S) h& b$ H
图 13! m# w* f1 w; d( q/ j% B# `! z. {* Z
4 J6 Y8 Y4 e z, j, `
2.5从Linux系统启动卡启动系统
8 ?5 L3 L/ s: w& t评估板断电,将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将拨码开关拨为00010(1~5),此档位为SD卡启动模式。使用Micro USB线连接评估板的USB TO UART3调试串口到PC机,然后将评估板上电启动,串口调试终端会打印以下类似启动信息。: j; _- w U" K6 [0 R; ^
![]()
! O7 E7 F* A& i. }图 14$ e$ K2 l( A+ x& W3 ~; M* t8 W
& m R- {" d( U8 l
9 W9 ^: W2 v6 e5 k# H. g, u
图 15 g7 p$ j/ N% W; y
5 F! b3 }6 z, i1 V S# H
系统启动后会自动登陆root用户,说明使用Linux系统启动卡启动评估板成功。
5 z7 i# ~. E }- U _ ' s2 O. X2 T3 {# |) x. j1 s
图 16
1 |1 `8 b. X& K+ ^/ J0 @5 K) W3 P" Y# f; {1 x$ Y& W& s0 B; A9 ^
可执行如下命令查看当前Linux内核版本信息。
% K. I6 i& T4 A$ k5 m+ m8 UHost#cat /proc/version: m$ m, }/ D9 c, i
![]()
* i3 T$ {2 N4 w' [2 K$ i图 17 Linux内核6 X1 A+ i; b) q* C9 \
! T0 y8 W1 X2 y$ Q- @ : p+ C6 y5 t/ h
图 18 Linux-RT内核
% X2 `) \0 |' Z& n; b( g6 v S) x, t# n0 \
3.固化Linux系统(SPI FLASH+eMMC)本小节介绍Linux系统固化过程,固化过程包含固化U-Boot到SPI FLASH和固化文件系统到eMMC。固化成功后,评估板从SPI FLASH启动U-Boot,然后从eMMC加载内核、设备树和文件系统。
3 B" ~0 U/ Z4 v- T$ i& l* y, m! s2 V% |; a/ }2 M
3.1挂载信息和SPI FLASH分区说明: H P1 U$ t3 j# h7 J' J! W
进入评估板系统后执行如下命令,分别查看系统启动卡和eMMC挂载详细信息,以及SPI FLASH分区信息。7 p% D. _4 I f2 V* r' P F8 ^
Target#df -h
* W- k9 K7 {7 ?* pTarget#cat /proc/mtd
. G6 O# @* t6 T9 |3 U$ F4 d![]()
7 K8 X) g! m" [/ t8 V图 193 j b0 g$ l" ?6 b: t9 r5 x0 C
6 Y F' ^9 U; i( F( P表 1- }9 Y: S! d1 M- [! M* C
Linux系统启动卡7 `5 M; P" }9 J3 e! s
| BOOT分区2 b6 i1 w# Y6 H7 l- _/ y; |2 Y
| 设备节点:/dev/mmcblk0p1
1 L) o0 K1 p! T2 ~1 J; V' z | 挂载路径:/run/media/mmcblk0p1
0 k- \! ?6 u3 E2 q/ Y! v | rootfs-backup分区4 f+ x4 {! }$ X
| 设备节点:/dev/mmcblk0p3
# P! c; ~+ B& V | 挂载路径:/run/media/mmcblk0p3
( C; r9 l' @9 K" V5 s5 `3 ~ | eMMC设备
* n- J) L! m3 G4 `5 c! E& A | BOOT分区
; D! Z; s( n. y/ U( p, Y9 q | 设备节点:/dev/mmcblk1p14 s. }% x8 n2 g3 p4 i- n' j' k
| 挂载路径:/run/media/mmcblk1p1
* B' q- @, }* G; g, \$ o8 v | rootfs分区
& ]) B9 s% l2 b+ A! u! n2 W4 k | 设备节点:/dev/mmcblk1p2
1 E, l5 \* X# A4 r | 挂载路径:/run/media/mmcblk1p2
" }4 M8 e& ~* B; j5 v6 v: y' A | data分区(用户分区)0 w `0 h0 n* R, ?, m
| 设备节点:/dev/mmcblk1p3$ A! E! I# V4 B5 o$ v
| 挂载路径:/run/media/mmcblk1p3. B: q8 Z9 k- \: V1 Z' `0 c1 o
| SPI FLASH
2 B" B2 C1 k4 B' ^& ]3 b( ^ | MTD0
" M$ z$ n) q& a: V | spi.spl:存放U-Boot第一阶段启动文件MLO' l# y0 X& }0 h% S9 f
| MTD1. V; q; P* z& R! L
| spi.u-boot:存放U-Boot第二阶段启动文件u-boot.img
2 y0 R8 e3 \5 u3 P | MTD2: b W V: M+ e
| spi.env:存放环境变量
! ^! E" ]2 v+ ^9 D& l5 l4 [3 o | MTD3) T. d% z( h! w, l2 {: L
| spi.devicetree:存放基础设备树文件(暂未使用)
- P2 F& n1 G3 J) \8 b5 G- M | MTD49 D# k7 G0 g; p- a: |; R. n
| spi.kernel:存放内核镜像(暂未使用)
1 r* d7 ~5 b2 ^% M' N |
4 r3 ~* U5 \% \& I; K) |5 V- C+ y6 ]0 L
3.2固化Linux系统! X! k0 \' O: E' g6 _
Linux系统启动卡制作时,已将系统固化的脚本文件mkemmcboot.sh复制到了Linux系统启动卡文件系统的“/opt/tools/make-system”目录下。* d: a; d& [ A5 `+ m8 H! {6 j
![]()
% k& [/ ^% R& D, L9 o1 g6 _图 20
9 s( `$ \1 w' F' ^2 C+ w1 i8 A- [/ l/ q* d! ^9 q
执行如下命令进行一键固化。' P, |! J# T# A+ v' {& m/ W2 n
Target#/opt/tools/make-system/mkemmcboot.sh
1 q. Y6 v5 j. w4 h 8 Q5 }# `3 V' q1 k, R: i
图 21
; G3 p9 a+ q* J4 s+ ?9 _4 i$ e" n$ `
* i' t% F/ A0 M J+ v5 w脚本会进行如下操作:
" ?: n$ S& |6 h% }: T) Q- 擦除SPI FLASH。
- 将eMMC格式化为BOOT、rootfs和data分区。
- 将Linux系统启动卡BOOT分区中的U-Boot固化到SPI FLASH对应分区。
- 将Linux系统启动卡BOOT分区中的LOGO文件固化到eMMC的BOOT分区。
- 将Linux系统启动卡rootfs-backup分区中的文件系统固化到eMMC的rootfs分区,[url=]包括内核镜像和基础设备树文件。[/url]6 {. p$ R/ g+ {$ g6 w
用时约3 min, Linux系统固化成功,同时串口调试终端打印提示信息。3 S7 G0 r/ H% a( O! S+ n
备注:脚本会将内核镜像、基础设备树文件固化到SPI FLASH中,实际启动并不会从SPI FLASH中加载内核镜像和基础设备树文件。
' g, m3 l% z. l, {- U6 T+ ]7 R6 C" Y$ q
3.3从SPI+eMMC启动系统
B3 ]1 j1 A5 G" k1 v' T( U. {评估板断电,将Linux系统启动卡从评估板Micro SD卡槽中取出,根据评估底板丝印将拨码开关拨为10010(1~5),此档位为SPI FLASH启动模式。评估板上电,串口调试终端将会打印如下类似启动信息。" [5 c3 n0 _' A( h I
![]()
, z1 h9 ?' f6 u& k0 N7 w% b图 22/ m% F0 i' R( Q2 d; N* C% Y- X
+ ]7 L7 W+ ]+ A8 ?8 D. x+ k# D
![]()
; \ x& s0 K/ H8 w- ~( `& p( y) @( h图 23
, Y+ r% D0 \; t2 \) x
6 u v. U! S I2 l4 I* Z# F( K% `0 `: A' t3 e: w8 g O
3.4动态设备树dtbo文件加载方法
, m4 k ^) x- \3 G) S评估板设备树文件包含基础设备树dtb文件和动态设备树dtbo文件,Linux系统启动时会自动加载dtb文件,dtbo文件需要在文件系统下进行加载。本章节以tl335x-evm-lcd-overlay.dtbo动态设备树为例,演示动态设备树文件的方法。
5 \) o2 ^/ P2 L+ f9 ^Linux系统启动卡制作时,已将动态设备树dtbo文件拷贝到文件系统的“/lib/firmware/”目录下。将需要加载其他dtbo文件,请将其拷贝到文件系统“/lib/firmware/”目录下。
1 L! U [, H( i% ?4 i ) C' h8 Q1 A1 _2 J% [2 a2 l
图 24
' {/ {' k! `$ Z) Q# J2 D/ A& H/ Q( e1 {0 s: b4 d
文件系统下依次执行如下命令,加载tl335x-evm-lcd-overlay.dtbo动态设备树文件。
J6 `5 G: k# c: P; [5 I7 qTarget#mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建4 {! y# N' J: K0 K0 ^. @
Target#mount -t configfs configfs /configfs
* N/ k; x, Y+ r6 p2 l: A* QTarget#mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际需要修改3 S" q7 @* O8 s9 o5 a4 c% K
Target#echo -n "tl335x-evm-lcd-overlay.dtbo" > /configfs/device-tree/overlays/full/path$ {. S8 s' o/ @: f5 P$ e
![]()
6 p$ d/ e$ w; y5 ^' b* k7 e图 25
. i- `2 C- e5 R! A
& n( d3 G/ _: {; E: g正常加载动态设备树文件后,系统会打印驱动加载的相关信息,部分驱动也有可能不打印任何信息。可执行如下命令查看动态设备树文件的加载状态。5 [- Y" A* P: R' I& o2 m
Target#cat /configfs/device-tree/overlays/full/status
" |" _ V$ C% y8 _- y( Z; J9 [Target#cat /configfs/device-tree/overlays/full/path; [1 C; X9 R I- s T
2 ?; x6 C) M/ x: I& o1 s" @! {1 {
图 26. k' j& L0 p/ I' C5 ~
8 W! }3 I$ q( r: G. Z4 v# ` |
|