找回密码
 注册
关于网站域名变更的通知
查看: 364|回复: 1
打印 上一主题 下一主题

Linux系统启动卡制作及系统固化

[复制链接]
  • TA的每日心情
    奋斗
    2020-3-25 15:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-9-17 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    前言本指导文档适用开发环境:
    ; d# @6 |; t& J6 tWindows开发环境:Windows 7 64bit、Windows 10 64bit# c7 ]7 o. b7 L, e+ m; P
    Linux开发环境:Ubuntu 14.04.3 64bit+ d' c  E% {3 l, ^2 H3 c
    虚拟机:VMware14.1.1
    9 Z3 z. V: P3 s: p2 V. R6 D/ UKernel:Linux-4.9.65、Linux-RT-4.9.65
    . h( f) A5 G) `$ V0 wLinux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05
      q, p6 X% e* F评估板支持通过Linux系统启动卡、eMMC、NAND FLASH三种方式启动。本文档主要演示Linux系统启动卡制作,以及将Linux系统固化到eMMC的方法。将Linux系统固化到NAND FLASH的方法,另见文档。" I$ d9 _* w8 ~3 @. ?( j/ z

    7 O; ~1 s+ i& w, G) T  |" S5 p1 M( m1 `% s" ^2 n2 k
    1.Linux系统启动卡制卡工具包说明1.1制卡工具包版本说明
    1 n1 O! G( n2 C0 Q; Z& @; W  E* V7 X产品资料“4-软件资料\Linux\MakESDboot\”目录下的mksdboot_AA_BB_CC_DD.tar.gz压缩文件是Linux系统启动卡制卡工具包,主要包含U-Boot、Linux内核、设备树镜像文件,以及文件系统压缩包等内容。AA_BB_CC_DD为制卡工具包的版本号,具体版本说明如下:
    & J8 E2 h. u0 P5 c% {% {: S$ X
    • AA: U-Boot发布版本。详细信息请查看“4-软件资料\Linux\U-Boot\”目录下的特性支持说明文件。
    • BB:Linux内核发布版本。详细信息请查看“4-软件资料\Linux\Kernel\”目录下的特性支持说明文件。
    • CC:文件系统发布版本。详细信息请查看“4-软件资料\Linux\Filesystem\”目录下的特性支持说明文件。
    • DD:产品测试程序发布版本。在文件系统下执行“cat /opt/product-test/version.txt”命令可查看具体版本信息。) t6 k- m# f1 T- `5 r# L* r8 |
    1.2制卡工具包目录说明
      s8 m1 {. _, H* y% e9 u打开Ubuntu,将制卡工具包复制到“/home/tronlong/AM335x”工作目录下,进入制卡工具包所在路径将其解压到当前目录。工具包名称需根据实际情况修改。
    ( V. E1 T8 _- k0 vHost# cd /home/tronlong/AM335x/0 V4 W/ t' z/ G! }% P  b# c- B
    Host# tar -xvf mksdboot_21_21_21_14.tar.gz -C .
    # n) p! Y' a( A2 [: w+ x$ N5 J& r, |6 s0 P; B
    图 17 R! R0 w" w- ^5 Q; P) R
    . m7 X8 s3 y5 ^+ n
    执行以下命令,查看解压后的制卡工具包具体内容。
    . p; |2 t2 ~% J0 L" ^8 I  fHost# tree -L 5 mksdboot_21_21_21_14
    ( h+ n1 F  G& {2 d+ h! x) s; d: R$ A$ D! r9 `/ ?
    图 2( A' O7 j) I/ n

    5 A2 `/ P" y8 p( Dboot目录1 j! P2 W! g1 l' D3 }2 }. f
    • MLO文件:U-Boot一级启动镜像。
    • u-boot.img文件:U-Boot二级启动镜像。
    • README.md文件:制卡工具包、U-Boot、Linux内核、文件系统等版本信息说明文件。logo.bmp文件:LOGO图片。7 W; K  F# w9 }$ }5 D" n( P4 v
    filesystem目录) b! ~5 ]+ f, s! \/ g& A. s
    • boot目录:主要包含Linux内核镜像zImage、Linux-RT内核镜像zImage-rt、基础设备树dtb文件、Linux-RT内核模块压缩包等。
    • firmware目录:主要包含动态设备树dtbo文件。
    • modules目录:主要存放Linux内核模块压缩包。
    • rootfs目录:主要存放文件系统压缩包。
    • tests目录:主要存放产品测试文件压缩包。
    • tools目录:主要存放Shell脚本压缩包。
      3 N8 }. ^! R/ p( |  r
    mksdboot.sh文件:Linux系统启动卡制作脚本文件。1 Z& f2 p5 M, T! Q

    * Y& }) F" }, M) s4 h5 ^7 l
    1 A- t4 ?0 l9 [1.3Linux-RT内核版本Linux系统启动卡制作说明
    4 l. ~$ I  }+ C0 j  _+ Q' e​​​​​​​制卡工具包包含Linux内核镜像、Linux内核模块,以及Linux-RT内核镜像、Linux-RT内核模块。默认情况下,制作的是Linux内核版本的Linux系统启动卡。如需制作Linux-RT内核版本的Linux系统启动卡,请按照本小节方法替换内核镜像和内核模块,否则请跳过此小节内容。% H/ k  g" n9 p7 D( H
    进入制卡工具包“filesystem/boot/”目录,备份Linux内核镜像zImage,并使用Linux-RT内核镜像zImage-rt替换原来的zImage文件。
    4 X4 n9 k: P. v. K) ^Host# cd filesystem/boot/
      `8 s; I) z* g, W# c4 VHost# cp zImage zImage-linux3 r2 v7 C& W' X
    Host# mv zImage-rt zImage
    ' `+ s( C1 \6 T# a; Y
    图 3
    : j+ `8 z& p% c8 H% e. L; ^, j2 Q- y" r
    将制卡工具包“filesystem/modules/”文件夹备份,并使用“filesystem/boot/modules-rt/”文件夹将其替换,命令如下。5 `! d8 F& S$ r% u5 v! c: y; S1 z; y
    Host# mv ../modules ../modules-linux
    ; `2 h4 X3 v* [0 H1 T$ U/ k- |Host# mv modules-rt ../modules
    + S, p+ p2 p) L5 X
    ' y; ?1 F" c  W4 o' u* v9 v图 45 [& U) m8 @" ~5 P' f

    . U" |  C& N8 d  u0 x, P  C% |替换完成后,即可继续参照后续章节方法制作Linux-RT内核版本的Linux系统启动卡。
    5 A* x% R4 U+ r& C1 v0 @​​​​​​​
    8 I# w- u0 z: [/ A6 A7 S2.Linux系统启动卡制作评估板出厂时,默认提供一张配套的Micro SD卡,此卡为可正常使用的Linux系统启动卡。本章节主要说明Linux系统启动卡的制作方法,可使用配套的Linux系统启动卡,或者使用新的空白Micro SD卡。如下步骤使用配套的Linux系统启动卡进行操作,如使用空白Micro SD卡,步骤类似。- T8 N3 B9 e% X) v$ a
    2.1 Micro SD卡挂载4 Q' T* ]- t' o; N- a
    将Micro SD卡通过读卡器连接到PC机,Ubuntu系统识别后,一般会自动挂载Micro SD卡分区,如下图所示。
    0 I$ H% z6 m- {& d/ ^0 _* z6 T4 G4 a/ Q# @/ y# V0 c
    图 5- l' `( A  A, a
      R! R9 ~' z& Q9 T
    如果Ubuntu系统没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”进行识别。
    8 U- x9 f4 Y% N+ n, c, D, w" R; _$ a" `
    图 61 h, f, b# H1 V+ y" j3 U

    ) o. j1 B' s* p2 {# s$ j5 H如果没有以上图标或者连接不成功,请尝试如下方法:& j9 c3 `1 m2 b+ N
    • 请将Micro SD卡通过读卡器插到PC机USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不兼容USB 3.0。
    • 请将Micro SD卡插在PC机上,然后重启Ubuntu,在Ubuntu重启过程中不要取出。Ubuntu系统重启后,存储设备图标会重新出现。​​​​​​​2 _$ |0 D% o3 ^3 `

    ( l) U1 K7 o+ H$ c2.2Micro SD卡设备节点名确认+ [; o* z, F# ]; ~0 k( v
    执行如下命令,确认Micro SD卡在Ubuntu系统的设备节点名。' t/ g9 v1 e; ]3 c. A* o
    Host#sudo fdisk -l& M; o4 g3 c# B4 d1 h- P1 A7 v
    # y% z1 M- o3 t0 ], A  w! d+ t
    图 7
    & A, u; e% ~7 C3 O% B0 p$ W* o4 A' z% f$ O$ s. o
    可以看到Micro SD卡设备节点是“/dev/sdb”,并且有三个分区,分别为sdb1、sdb2和sdb3分区。设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。
    6 F; P# w) B+ t. J
    ' ]( o  Y4 h, o0 n7 F2.3PV工具安装
    ' l4 C, g7 c& w# @9 a: P8 NPV(Pipe Viewer)是一种基于终端的工具,用于通过管道监测数据的进度。, ?, K* i1 L& x
    为了更直观地显示系统启动卡的制作进度,Linux系统启动卡制作过程中会使用到PV工具。请执行如下命令通过网络安装PV工具,如未安装PV工具将会导致系统启动卡制作失败。. g$ c5 X2 W7 e) k5 _; p
    Host#sudo apt-get install pv
    , P- `, U& U% c) b9 b# {
    / E$ ]: W# ~/ u1 Y8 ]6 q图 87 v  \) y5 V* h3 d( f% J: \

    7 K% t0 Z) k  |: M4 X$ l' H  Y2.4Linux系统启动卡制作
    6 |9 q  H0 N2 a" ^% r如下为Linux系统启动卡制作命令。命令中“/dev/sdb”为Micro SD卡设备节点,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏,请确认命令中设备节点无误后,再执行命令。7 p4 R# ~( r6 T0 K
    Host#sudo ./mksdboot.sh -d /dev/sdb9 n3 Q+ L* x' S8 Z1 Y
    7 b% V# X" i1 S* I- S5 o* f) N
    图 9
    3 t, \: E" p. J( g' ~( d: ^% Q0 m" a
    根据提示按回车键,进行Linux系统启动卡制作。! \3 m* C1 m- f
    0 W; j" S; X* _6 q& \
    图 10
    2 O5 v! v( b+ r6 Y4 y
    + r, K" I- D9 s% R/ g4 t: s' Q耗时约5~10min,Linux系统启动卡制作完成。同时,系统会打印提示信息,如下图所示。制作时间与Linux系统大小、Micro SD卡容量和接口性能有关。- }& `) N5 R' H0 l0 ]: Y
    ; E' c; y( _( x1 e& q% N# T% }
    图 11
    * |  W, a0 ]: r/ M
    - C$ Y' O: u$ \- H, @8 z执行如下命令,可看到新制作的Linux系统启动卡共有BOOT、rootfs和rootfs-backup三个分区。其中BOOT分区为FAT32格式,rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。
    % r' o1 Q6 S; q1 o+ B1 v  ~. I
    - ?/ p7 c& Y2 j" D图 12
    ' v$ P1 C3 Z( I# q) [, {) {
    7 y3 _9 F7 M1 Q. a' G3 o9 G& sBOOT分区:主要存放U-Boot镜像MLO、u-boot.img、LOGO等文件,从制卡工具包boot目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的MLO、u-boot.img文件启动U-Boot。' E7 J; J5 Q- q( k' V
    rootfs分区:存放文件系统。rootfs分区boot目录主要存放内核镜像、基础设备树文件等文件,从制卡工具包“filesystem/boot/”目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的zImage、tl335x-evm.dtb文件启动内核。$ J- P" N$ y/ K5 c+ P# _$ S5 M
    rootfs-backup分区:存放文件系统备份文件。系统固化时,将其内容固化到eMMC或NAND FLASH。
    & |) w# g& |5 q点击右下角的大容量存储设备图标,选择“Disconnect(Connect to host)”选项(如下图),断开Micro SD卡和Ubuntu的连接,完成Linux系统启动卡制作。
    ! x2 z+ d% N6 {, O& k& B( g& E1 z4 ~
    4 @# w/ Q) [# c: j图 136 c) X" d/ z# V

    / L2 Q/ q& c, \8 u6 f- A2.5从Linux系统启动卡启动系统
    ' M- Z) F: j( q- b6 t评估板断电,将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将拨码开关拨为00010(1~5),此档位为SD卡启动模式。使用Micro USB线连接评估板的USB TO UART3调试串口到PC机,然后将评估板上电启动,串口调试终端会打印以下类似启动信息。
    ' f' }4 b! r+ J1 \+ g/ }0 G: W
    ( x' r( A; L6 |2 b9 b2 s图 14
    9 e4 H' L7 P2 D  r' C) C( J1 w; d( Q% `  w! |

    : E3 e, {( j* O! q图 15
    5 g& z. L! Q/ B1 D" r9 A/ b; v- a/ ~3 L% H
    系统启动后会自动登陆root用户,说明使用Linux系统启动卡启动评估板成功。
    5 v9 U) U7 ]  Y6 B- _. C0 r
    ) ~+ q6 X+ L( H图 16
    ; ^% _6 o) o8 t4 ^; c0 u. e( u: Z
    可执行如下命令查看当前Linux内核版本信息。
    0 K4 r, i$ ?6 j4 u. |) m* w. LHost#cat /proc/version
    - e7 v3 Q! Z% M9 [( z( R  p2 W3 V7 [8 _0 R( k8 _
    图 17 Linux内核
    ( J- m; |8 H/ B, S3 m5 |
    ( t9 [' {0 T" o9 `% v8 ~) p: X% h% L: |: q/ K4 f
    图 18 Linux-RT内核, {+ Q% j/ @' Q) p& y3 D! ?4 l* {
    ' F& l2 |: [% p( t
    3.固化Linux系统(SPI FLASH+eMMC)本小节介绍Linux系统固化过程,固化过程包含固化U-Boot到SPI FLASH和固化文件系统到eMMC。固化成功后,评估板从SPI FLASH启动U-Boot,然后从eMMC加载内核、设备树和文件系统。! V* s- z) v5 D& f

    . d# W; Z' |8 @/ P, O3.1挂载信息和SPI FLASH分区说明: B  T, u0 P' Z8 v. o8 x
    进入评估板系统后执行如下命令,分别查看系统启动卡和eMMC挂载详细信息,以及SPI FLASH分区信息。$ E0 F8 K0 k& w1 R; i" |
    Target#df -h
    3 O/ K  f% _6 f8 C3 NTarget#cat /proc/mtd" ^( y, i1 X) M; j# W; Q
    " i2 b% `4 x- z/ h
    图 198 Q' L3 X  B' q7 |% S# P
    - k+ n# K  Z/ t2 S6 H% `; V- `) g* H* c
    表 11 w9 V! E  {+ E  ^" C. H0 Q5 T2 Y1 V3 \
    Linux系统启动卡
      R4 k3 Q: |7 ^: v" W
    BOOT分区
    4 D' E; g+ x% }; f' \
    设备节点:/dev/mmcblk0p1% [& u# D/ z& M% ^9 K
    挂载路径:/run/media/mmcblk0p1( r* g! q2 c3 T
    rootfs-backup分区
    1 n3 C1 C; H! p8 L/ C$ Q5 c4 v
    设备节点:/dev/mmcblk0p3- {+ T! e' R7 z+ Q) u
    挂载路径:/run/media/mmcblk0p3, P# a# h4 D. G' G
    eMMC设备- q: `+ {( x  k; Q3 e. Z
    BOOT分区
    / |& l& X/ d/ I! I9 S) l
    设备节点:/dev/mmcblk1p12 j( K/ f9 X, y2 k/ J0 r2 J
    挂载路径:/run/media/mmcblk1p1
    . Z0 D6 x1 d6 v6 \6 Z
    rootfs分区
    4 i& S2 s3 I0 S- M
    设备节点:/dev/mmcblk1p2
    " s9 ^* B" m( {$ H0 _& v4 o( Y
    挂载路径:/run/media/mmcblk1p2
    * G6 q5 A6 P/ `3 T1 ]
    data分区(用户分区)
    9 X" _2 ^* z% y2 V8 l, b" W+ J3 J
    设备节点:/dev/mmcblk1p3# g6 X# h" S5 B+ X
    挂载路径:/run/media/mmcblk1p3$ Y, E2 B. B8 |. e
    SPI FLASH# t" Q$ y: ?4 ^* _; i  C9 O
    MTD07 x* _, F( Y9 R) P
    spi.spl:存放U-Boot第一阶段启动文件MLO
    ' n. p6 v" f/ u- p
    MTD1
    3 E0 C. r; W  K" c5 o
    spi.u-boot:存放U-Boot第二阶段启动文件u-boot.img4 y7 E- ~6 Z4 m& Z  k$ u- u
    MTD2& u1 j! U5 M1 s# j
    spi.env:存放环境变量
    2 m- \, T; a! k- A6 W  O
    MTD3* M/ n! D% K2 Q  V' F3 S3 n0 R& l
    spi.devicetree:存放基础设备树文件(暂未使用)
    9 c, k& Q7 _6 w4 e
    MTD4
    8 S& ^3 Z- Z) p8 Q3 c
    spi.kernel:存放内核镜像(暂未使用)
    ' e: c- u9 ~1 `$ l1 |7 \
    3 B* N! h" @3 R# H* Y
      L( x6 g2 g8 @7 V! a# t
    3.2固化Linux系统
    ) U, o- g/ m3 Y" nLinux系统启动卡制作时,已将系统固化的脚本文件mkemmcboot.sh复制到了Linux系统启动卡文件系统的“/opt/tools/make-system”目录下。* r5 {& ^" Z5 ~/ E" D
    7 h3 f/ a- v7 S  Y8 E
    图 20
    ! y, D, Z% Z# W2 K2 u; G" \
      y" ~. G) V, p- G" B6 A执行如下命令进行一键固化。
    ( Q- `0 @! i. A. X; C; {& nTarget#/opt/tools/make-system/mkemmcboot.sh
    , `, g! N' _4 y! E' F( o% y' q" z0 o: W# Z5 L7 j
    图 21
    0 n) F0 Y% C5 I$ G. V& T
    # b$ j. E; O' b4 K- J! B6 M  A( g脚本会进行如下操作:4 {, L5 p- d+ @9 _+ y  d
    • 擦除SPI FLASH。
    • 将eMMC格式化为BOOT、rootfs和data分区。
    • 将Linux系统启动卡BOOT分区中的U-Boot固化到SPI FLASH对应分区。
    • 将Linux系统启动卡BOOT分区中的LOGO文件固化到eMMC的BOOT分区。
    • 将Linux系统启动卡rootfs-backup分区中的文件系统固化到eMMC的rootfs分区,[url=]包括内核镜像和基础设备树文件。[/url]
      / I- L9 N2 _5 d& u+ U
    用时约3 min, Linux系统固化成功,同时串口调试终端打印提示信息。0 }0 K4 c* d  N0 q  x; I
    备注:脚本会将内核镜像、基础设备树文件固化到SPI FLASH中,实际启动并不会从SPI FLASH中加载内核镜像和基础设备树文件。
    ) n, v! H, v3 c7 c1 Z( S* P" j4 A: {+ o5 z* ?
    3.3从SPI+eMMC启动系统
    5 J7 S* d5 n; W  C评估板断电,将Linux系统启动卡从评估板Micro SD卡槽中取出,根据评估底板丝印将拨码开关拨为10010(1~5),此档位为SPI FLASH启动模式。评估板上电,串口调试终端将会打印如下类似启动信息。
    7 g' B; ~9 x/ D" [' x6 P9 q( `; X- m9 e2 p3 Z
    图 22
    1 E9 d' c9 D2 y  E  L6 B# C9 J/ p
    ) ~/ }9 k0 q5 l. x- l& Y
    7 ]) j' m& F5 P图 23" v- [$ a) `" r6 x& d
    6 x! H2 o1 w' U3 U3 x3 m7 w

    7 E% a5 ]3 V: w1 x4 [3.4动态设备树dtbo文件加载方法
    ( ?9 ^0 K" ^- x# @8 d4 G8 A评估板设备树文件包含基础设备树dtb文件和动态设备树dtbo文件,Linux系统启动时会自动加载dtb文件,dtbo文件需要在文件系统下进行加载。本章节以tl335x-evm-lcd-overlay.dtbo动态设备树为例,演示动态设备树文件的方法。
    9 a* t: C6 L+ ^7 f5 a8 CLinux系统启动卡制作时,已将动态设备树dtbo文件拷贝到文件系统的“/lib/firmware/”目录下。将需要加载其他dtbo文件,请将其拷贝到文件系统“/lib/firmware/”目录下。& Q' g6 d/ m( s  d1 S' f
    " e+ g: p3 o. V! K+ E9 A
    图 24
    : Z# i/ N( @" e+ e: `* H, c( `8 m. H& X1 }+ U" D4 P2 ~$ A: p
    文件系统下依次执行如下命令,加载tl335x-evm-lcd-overlay.dtbo动态设备树文件。
    , L. m) z/ d8 K) QTarget#mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建
    3 `) x0 P! J) d, l) OTarget#mount -t configfs configfs /configfs
    + @$ \7 O- `: d5 ?0 F3 mTarget#mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际需要修改
    3 \3 `' T1 C' S0 s' \* D9 QTarget#echo -n "tl335x-evm-lcd-overlay.dtbo" > /configfs/device-tree/overlays/full/path) G) _: G4 I3 f8 X7 K0 q

    3 A; k7 a9 z  X" n/ u图 25" R! A: K+ U/ U- s6 e% O" `
    , z8 x7 T* z1 J3 ?
    正常加载动态设备树文件后,系统会打印驱动加载的相关信息,部分驱动也有可能不打印任何信息。可执行如下命令查看动态设备树文件的加载状态。( `1 R+ y' C  Y  L; q
    Target#cat /configfs/device-tree/overlays/full/status5 `! u6 ^0 o' O2 o
    Target#cat /configfs/device-tree/overlays/full/path
    8 J. P* u2 u, k  l* x9 y
    $ p. m' M% s; l$ r* j' b图 26
    + P% b2 m# M' J! ?; u8 h. \+ V
      ^& M, g6 ^8 f% O7 g" ~
  • TA的每日心情
    慵懒
    2020-9-2 15:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2#
    发表于 2020-9-17 17:25 | 只看该作者
    感谢分享  厉害
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-25 00:30 , Processed in 0.171875 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表