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

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

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

    [LV.1]初来乍到

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

    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 t8 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  A​​​​​​​1 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
  • 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-6-28 15:44 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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