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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    前言本指导文档适用开发环境:) r6 u0 E+ s: k; N% ^! g# g8 E
    Windows开发环境:Windows 7 64bit、Windows 10 64bit
    1 h2 d3 Z+ \# D+ D4 g- M+ CLinux开发环境:Ubuntu 14.04.3 64bit
    6 n; }# W# E" H: J/ Q虚拟机:VMware14.1.1
    ) K) U- b0 X/ C5 JKernel:Linux-4.9.65、Linux-RT-4.9.65. p/ v8 S; R6 c
    Linux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05
    ( \5 T& Q& M% L. X评估板支持通过Linux系统启动卡、eMMC、NAND FLASH三种方式启动。本文档主要演示Linux系统启动卡制作,以及将Linux系统固化到eMMC的方法。将Linux系统固化到NAND FLASH的方法,另见文档。% l1 g$ {/ i) g. ?
    ! v( U) I7 c& q( ]  B
    . d- {% H5 H+ ?$ Y: H4 w. X& A  C
    1.Linux系统启动卡制卡工具包说明1.1制卡工具包版本说明
    6 o+ T* e+ Y0 E" X: M, S2 |产品资料“4-软件资料\Linux\MakESDboot\”目录下的mksdboot_AA_BB_CC_DD.tar.gz压缩文件是Linux系统启动卡制卡工具包,主要包含U-Boot、Linux内核、设备树镜像文件,以及文件系统压缩包等内容。AA_BB_CC_DD为制卡工具包的版本号,具体版本说明如下:
    ! w1 C" H. O0 |3 M
    • AA: U-Boot发布版本。详细信息请查看“4-软件资料\Linux\U-Boot\”目录下的特性支持说明文件。
    • BB:Linux内核发布版本。详细信息请查看“4-软件资料\Linux\Kernel\”目录下的特性支持说明文件。
    • CC:文件系统发布版本。详细信息请查看“4-软件资料\Linux\Filesystem\”目录下的特性支持说明文件。
    • DD:产品测试程序发布版本。在文件系统下执行“cat /opt/product-test/version.txt”命令可查看具体版本信息。
      , S- Q2 J0 T! V/ `' e; |/ W
    1.2制卡工具包目录说明
    " c+ @. y- T0 c# N0 V' f打开Ubuntu,将制卡工具包复制到“/home/tronlong/AM335x”工作目录下,进入制卡工具包所在路径将其解压到当前目录。工具包名称需根据实际情况修改。
    ! b. f2 ?+ i  a; S2 K7 y1 PHost# cd /home/tronlong/AM335x/+ }" f  S7 l* j- Y' o3 E5 S
    Host# tar -xvf mksdboot_21_21_21_14.tar.gz -C .1 j  E2 W0 L* Q
    1 y# _' ]& o3 v1 F. A
    图 16 K& Q" O5 y: ^. I
    $ t& T$ S+ v" A, ]& J" {) \
    执行以下命令,查看解压后的制卡工具包具体内容。
    % }1 Q$ Q/ l$ }  u! e" S! |! xHost# tree -L 5 mksdboot_21_21_21_14" @9 |# e/ C6 T
    % F  _2 Q# z" }+ D- s  R7 F# k. @1 M
    图 2' \* s6 R5 }( J0 @1 s2 @/ Q5 U
    ; X+ d! [0 G; G7 H" T
    boot目录4 y8 ^8 y, b. o- y  V
    • MLO文件:U-Boot一级启动镜像。
    • u-boot.img文件:U-Boot二级启动镜像。
    • README.md文件:制卡工具包、U-Boot、Linux内核、文件系统等版本信息说明文件。logo.bmp文件:LOGO图片。
        W) B4 |4 G4 u9 K
    filesystem目录( B' t  K3 ?8 c4 A; \* W
    • boot目录:主要包含Linux内核镜像zImage、Linux-RT内核镜像zImage-rt、基础设备树dtb文件、Linux-RT内核模块压缩包等。
    • firmware目录:主要包含动态设备树dtbo文件。
    • modules目录:主要存放Linux内核模块压缩包。
    • rootfs目录:主要存放文件系统压缩包。
    • tests目录:主要存放产品测试文件压缩包。
    • tools目录:主要存放Shell脚本压缩包。7 ]4 [0 ~& j$ t' h+ a8 o; I
    mksdboot.sh文件:Linux系统启动卡制作脚本文件。" E& Y: ]8 _7 n6 k; y; N
    - D- u8 m$ G5 \& q2 n! \" |3 E

      h$ m9 ?+ I, _7 V' ?! K8 A1.3Linux-RT内核版本Linux系统启动卡制作说明
    9 K! |; x9 ~* u$ Y​​​​​​​制卡工具包包含Linux内核镜像、Linux内核模块,以及Linux-RT内核镜像、Linux-RT内核模块。默认情况下,制作的是Linux内核版本的Linux系统启动卡。如需制作Linux-RT内核版本的Linux系统启动卡,请按照本小节方法替换内核镜像和内核模块,否则请跳过此小节内容。0 {" e, P' v  K1 b0 R
    进入制卡工具包“filesystem/boot/”目录,备份Linux内核镜像zImage,并使用Linux-RT内核镜像zImage-rt替换原来的zImage文件。
    " R# T2 L- U& |* X8 ]2 @; cHost# cd filesystem/boot/
    6 n9 r1 j" G8 @: E# S& qHost# cp zImage zImage-linux! N4 {5 {( C8 S5 m& A+ {% [
    Host# mv zImage-rt zImage
    % D! E" O9 T9 e) Y! |
    图 3$ X% `7 o! U, D! E2 K6 |/ J
    . o7 p- p8 q, g) _( F# t
    将制卡工具包“filesystem/modules/”文件夹备份,并使用“filesystem/boot/modules-rt/”文件夹将其替换,命令如下。
    * T. Z) t" m" R& R5 O3 t$ hHost# mv ../modules ../modules-linux6 B3 I3 B- a/ P! r. d
    Host# mv modules-rt ../modules
    2 m% q, X+ a4 g9 G$ ]
    ) J( h4 _% Y0 }+ W( N9 C图 4- b& Z2 p! ]* ^1 a

    . m4 @6 h! v  b5 [0 s& @替换完成后,即可继续参照后续章节方法制作Linux-RT内核版本的Linux系统启动卡。5 c$ |0 d6 }5 U  ~! H) u. H
    ​​​​​​​, w. W. ?# V# G
    2.Linux系统启动卡制作评估板出厂时,默认提供一张配套的Micro SD卡,此卡为可正常使用的Linux系统启动卡。本章节主要说明Linux系统启动卡的制作方法,可使用配套的Linux系统启动卡,或者使用新的空白Micro SD卡。如下步骤使用配套的Linux系统启动卡进行操作,如使用空白Micro SD卡,步骤类似。# z3 i# ?) m3 C. \4 U
    2.1 Micro SD卡挂载
    ) B& F! a: B2 r% ^7 i: |* U8 {) I将Micro SD卡通过读卡器连接到PC机,Ubuntu系统识别后,一般会自动挂载Micro SD卡分区,如下图所示。1 N+ K/ S2 Z) G: J5 t

    * U- q; M! R, b" Z) r/ K/ x图 5) a, \9 H( ]9 z
    0 k, x2 r' A# x) `) @% A+ a) r
    如果Ubuntu系统没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”进行识别。6 k$ A) h/ n) Q! I7 N7 o; `) A

    ( m0 t' M% D1 x# C: l$ e, a图 6& t+ L; V# R) H4 `: H
    ' Z* i  `- a# A  j% u6 ^5 W" x1 E
    如果没有以上图标或者连接不成功,请尝试如下方法:3 {8 j& Z2 N) `& x* ?2 L. |& n  q
    • 请将Micro SD卡通过读卡器插到PC机USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不兼容USB 3.0。
    • 请将Micro SD卡插在PC机上,然后重启Ubuntu,在Ubuntu重启过程中不要取出。Ubuntu系统重启后,存储设备图标会重新出现。​​​​​​​- j& e8 N) `$ d1 T- `* a- W, s
    & j5 d$ o, \' }1 ^% [2 w
    2.2Micro SD卡设备节点名确认
    % ^* v- r8 S& }7 ?1 l" N( j执行如下命令,确认Micro SD卡在Ubuntu系统的设备节点名。
    # i$ o+ M! e; v) `6 UHost#sudo fdisk -l/ ~- ?4 ]2 |) U7 x

    5 P( Q( C* x5 ~8 u9 u图 7' D8 H, q0 h6 b' S
    1 z: t4 s" d2 Z
    可以看到Micro SD卡设备节点是“/dev/sdb”,并且有三个分区,分别为sdb1、sdb2和sdb3分区。设备节点名字是可变的,一般插拔多次或者使用不同的卡插拔后,可能会显示sdc或者sdd。* m! |! A( [9 D& v
    ) s# Y- S% i: y
    2.3PV工具安装
    6 A9 T7 p& n# D& `- `PV(Pipe Viewer)是一种基于终端的工具,用于通过管道监测数据的进度。. f0 U" H+ r9 K, L6 X5 ]6 u
    为了更直观地显示系统启动卡的制作进度,Linux系统启动卡制作过程中会使用到PV工具。请执行如下命令通过网络安装PV工具,如未安装PV工具将会导致系统启动卡制作失败。% K, z$ l+ B# _1 k4 j7 p
    Host#sudo apt-get install pv6 I) D2 k; H+ T9 Y8 H; z; {
    + ~" V' J3 ]7 O, S3 H; s
    图 8
    + g- r$ w  W. l! s" I* m! r( C7 f
    / {% l- E1 |% M5 |" h2.4Linux系统启动卡制作$ K; u- _  t1 R! v3 K$ ~
    如下为Linux系统启动卡制作命令。命令中“/dev/sdb”为Micro SD卡设备节点,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏,请确认命令中设备节点无误后,再执行命令。6 K( L' m6 B. D; n
    Host#sudo ./mksdboot.sh -d /dev/sdb
    # \$ b! U0 `( @% K+ v' b
    9 y3 M4 C7 _: W8 y! o7 ~. g4 b图 9* z+ C8 d+ r0 `; ^% R3 X1 M
    ( T) M. Y/ }! W$ v
    根据提示按回车键,进行Linux系统启动卡制作。8 U% t5 D6 G9 T6 A# `9 ?+ s4 @
    ' w0 w, {1 b) n6 x/ I
    图 10
    * m% s9 v% H5 P. |) |" J7 \7 X3 N( w& e# Q; ~
    耗时约5~10min,Linux系统启动卡制作完成。同时,系统会打印提示信息,如下图所示。制作时间与Linux系统大小、Micro SD卡容量和接口性能有关。# o$ X6 y- z/ C% m2 {8 I: Q7 Y) I
    6 Q4 Z% c3 [( t1 Z
    图 11$ ^8 Z* L2 d6 s; q* T3 y
    7 R/ \9 b! d% v9 y1 \1 _1 t- z
    执行如下命令,可看到新制作的Linux系统启动卡共有BOOT、rootfs和rootfs-backup三个分区。其中BOOT分区为FAT32格式,rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。, p% Z8 g8 Q& N5 F0 `! i
    # p+ y0 w# k; O- q4 t8 q" k
    图 12
    ! f; `4 `3 H, X; Z  C
    $ M' a  H, _0 Y7 b/ NBOOT分区:主要存放U-Boot镜像MLO、u-boot.img、LOGO等文件,从制卡工具包boot目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的MLO、u-boot.img文件启动U-Boot。
    ' l4 x! H# s" P1 e6 r/ Nrootfs分区:存放文件系统。rootfs分区boot目录主要存放内核镜像、基础设备树文件等文件,从制卡工具包“filesystem/boot/”目录复制而来。使用Linux系统启动卡启动系统时,将使用此目录的zImage、tl335x-evm.dtb文件启动内核。
    7 k6 ]' h2 B! s9 S4 l" l9 grootfs-backup分区:存放文件系统备份文件。系统固化时,将其内容固化到eMMC或NAND FLASH。
    : c  l% {1 e7 _) }4 i2 @! c点击右下角的大容量存储设备图标,选择“Disconnect(Connect to host)”选项(如下图),断开Micro SD卡和Ubuntu的连接,完成Linux系统启动卡制作。
    : O1 U4 y8 c: B1 S  m6 L* p4 o# |" ?7 N1 ?1 W# u+ Z
    图 13) `* x9 N; A* {# y8 O9 m* m

    $ f) Y% U' u, y2 v# A2.5从Linux系统启动卡启动系统
    2 C; D) u4 w5 l- L评估板断电,将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将拨码开关拨为00010(1~5),此档位为SD卡启动模式。使用Micro USB线连接评估板的USB TO UART3调试串口到PC机,然后将评估板上电启动,串口调试终端会打印以下类似启动信息。$ H3 _  {. ]. U  ^! @: I$ @
    8 o. |6 P) g% x3 t
    图 143 v) c; D1 j7 x( S
    6 B* L3 b- y/ F: e
    7 }0 [7 r8 f  M
    图 158 c# {# \+ G  r) a- z
    ! p) B( ~8 f7 Z
    系统启动后会自动登陆root用户,说明使用Linux系统启动卡启动评估板成功。$ C; x& Y) X4 {2 B0 V# J. U
    ) [5 K  a; E% s6 S) Q
    图 16$ u9 V. w# u/ B8 _) a3 K
    & p* m. _0 j: }! h
    可执行如下命令查看当前Linux内核版本信息。' D6 a9 W; n' f& c, y8 {* H
    Host#cat /proc/version
    ( M7 W: S; P( ]5 H9 d, I! ^1 g2 z
    图 17 Linux内核
    3 y( g- Y) M( P' O$ Y, B% Y( w& g1 \* c" w- D! G5 X. T

    4 [; S- H: j$ T: D) ?, l$ C图 18 Linux-RT内核
    , Z- s4 d5 Z& q$ m1 U3 M
    0 N- \, n/ T: q+ Y! M8 s6 o* D3.固化Linux系统(SPI FLASH+eMMC)本小节介绍Linux系统固化过程,固化过程包含固化U-Boot到SPI FLASH和固化文件系统到eMMC。固化成功后,评估板从SPI FLASH启动U-Boot,然后从eMMC加载内核、设备树和文件系统。( [% z6 n$ g: ]! m+ L( v0 y' C

    ; q2 O8 N5 f+ i. ^8 x: _2 c3.1挂载信息和SPI FLASH分区说明
    , Y( v4 @# A) t: t* B进入评估板系统后执行如下命令,分别查看系统启动卡和eMMC挂载详细信息,以及SPI FLASH分区信息。
    / ]( R$ M  ?- p- J2 V) _Target#df -h
    , |* Z2 P0 u6 O! e( d5 GTarget#cat /proc/mtd
    ; J' A' b$ D9 X
    % T1 c9 L6 x. P9 P1 J4 P, j/ X; H图 19) B2 z# f( i% ~8 `* L' j4 \* l
    / r& a* S2 ]3 t& A! a
    表 1
    6 m: T% o7 ^. |% _
    Linux系统启动卡
    ( _' d* ]( }; X( Z3 |6 S$ Q5 R
    BOOT分区
    ) q# F  w2 g: `' C/ I
    设备节点:/dev/mmcblk0p1# A. N8 Q- a! K0 m
    挂载路径:/run/media/mmcblk0p1) }# w1 I. x4 f8 [; R! N
    rootfs-backup分区/ m% A9 @- `! e7 v
    设备节点:/dev/mmcblk0p39 B7 E' \, D" V; u
    挂载路径:/run/media/mmcblk0p3
    ! L% v8 l& L6 W  |$ S7 n
    eMMC设备
    ) B/ H) ?6 p5 C- T& S4 h
    BOOT分区
    1 v) t' A2 T$ {5 T+ _& w5 k: x
    设备节点:/dev/mmcblk1p12 C9 ]. _- t$ S" _  D( @
    挂载路径:/run/media/mmcblk1p1% t( y( y! t6 f6 t
    rootfs分区5 b. G& e: y7 v- L7 m. ]2 r' p; U
    设备节点:/dev/mmcblk1p2
    8 l. H9 w& u, R, y4 R
    挂载路径:/run/media/mmcblk1p2
    0 T, V* K8 T% E" h2 _! W) M; m0 S
    data分区(用户分区)  e& Z- i9 m% [* ^( [/ T3 `
    设备节点:/dev/mmcblk1p3
    / h- i1 ]! I7 t
    挂载路径:/run/media/mmcblk1p3. k9 Q/ p6 c& @, S$ W8 L
    SPI FLASH
    % L0 N- F0 J6 D& x
    MTD07 k# M! ^9 |  G: q, `
    spi.spl:存放U-Boot第一阶段启动文件MLO* y. X  B9 R1 q; V7 ]6 b' s
    MTD1
    7 k7 ]" A' D% @  ~4 I
    spi.u-boot:存放U-Boot第二阶段启动文件u-boot.img# w, F- R; I$ e
    MTD24 L& z) p  n& G% p
    spi.env:存放环境变量
    & C3 ~6 B7 u, Z2 `6 ]% I. `" O0 r
    MTD3! W4 V; F; j6 A, B7 t
    spi.devicetree:存放基础设备树文件(暂未使用)
    4 Q  J% w# H4 }5 K. R
    MTD4
    & e5 b! W% ~  \# Q
    spi.kernel:存放内核镜像(暂未使用)$ I/ |( d; V- J
    ) L' T  E% y  S- O8 Q
    ; [. J' C9 ]( g/ F6 @5 e2 O
    3.2固化Linux系统4 V' q% r" l5 `" h, ?5 A; S. v
    Linux系统启动卡制作时,已将系统固化的脚本文件mkemmcboot.sh复制到了Linux系统启动卡文件系统的“/opt/tools/make-system”目录下。" S' B, M: ]! P/ O& `

    4 Y) ^% [" P5 a, U图 20
    7 S& P8 ~9 x; d2 X; a7 X' P2 c4 C
    执行如下命令进行一键固化。
    ; x. w# {" a: |" V: s" U. R) xTarget#/opt/tools/make-system/mkemmcboot.sh
    . s! u8 _; N4 Q4 Z
    2 ]0 p- C8 M/ F8 C+ r4 P/ h图 21
    + l3 d  c- i# a9 ?2 ?/ X) O
    ( D: q' B" v. f, p/ [脚本会进行如下操作:9 G1 M; N! 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]: L" `9 s" S7 k! q$ F/ |4 w
    用时约3 min, Linux系统固化成功,同时串口调试终端打印提示信息。. g( t4 D' `0 N8 g7 M
    备注:脚本会将内核镜像、基础设备树文件固化到SPI FLASH中,实际启动并不会从SPI FLASH中加载内核镜像和基础设备树文件。/ C: L) s4 g- X
    2 X# Z3 ]+ \( O) a
    3.3从SPI+eMMC启动系统
    + G  V5 {# g' z$ n评估板断电,将Linux系统启动卡从评估板Micro SD卡槽中取出,根据评估底板丝印将拨码开关拨为10010(1~5),此档位为SPI FLASH启动模式。评估板上电,串口调试终端将会打印如下类似启动信息。
    4 C& ?* ~8 u7 f6 J+ P2 s( A  b9 v' R& _4 V" l+ S
    图 22
    * S4 u& a5 o2 I% T, E+ J1 i* F1 V+ m2 l1 Q# v  `; F- s3 i0 E
    ! h/ p' E" a& J- A5 E
    图 23
    ( V6 ]3 w, Q8 q4 c2 D$ S, J; Z% v! [( R: p3 j

    ; A6 ^9 w1 r/ D$ f3.4动态设备树dtbo文件加载方法
    ( l/ b- T% Z5 _; Q; m评估板设备树文件包含基础设备树dtb文件和动态设备树dtbo文件,Linux系统启动时会自动加载dtb文件,dtbo文件需要在文件系统下进行加载。本章节以tl335x-evm-lcd-overlay.dtbo动态设备树为例,演示动态设备树文件的方法。
    ! P9 Y1 X0 I; |) I& ULinux系统启动卡制作时,已将动态设备树dtbo文件拷贝到文件系统的“/lib/firmware/”目录下。将需要加载其他dtbo文件,请将其拷贝到文件系统“/lib/firmware/”目录下。. ?3 S! B9 d# b9 O# s7 q) A
    4 m0 P$ r' s9 M: q
    图 24/ Z# N7 P6 \. h- h

    6 x; Q3 f2 C# ^# A' w文件系统下依次执行如下命令,加载tl335x-evm-lcd-overlay.dtbo动态设备树文件。) E3 Q: }% S" u
    Target#mkdir /configfs //创建configfs文件夹,如已存在,则无需重复创建
    : m* R5 _5 {# k( C5 l8 mTarget#mount -t configfs configfs /configfs
    3 C- U$ q' G& H8 V. K' D+ V+ B* PTarget#mkdir /configfs/device-tree/overlays/full //创建full目录,根据实际需要修改9 o, U5 I9 ?  t2 u, U9 A
    Target#echo -n "tl335x-evm-lcd-overlay.dtbo" > /configfs/device-tree/overlays/full/path# i* e* V* o! E0 J

    7 Q3 I% j& e9 G  q1 |图 25! B  N1 P) f2 J
    % G5 |# j& [) z
    正常加载动态设备树文件后,系统会打印驱动加载的相关信息,部分驱动也有可能不打印任何信息。可执行如下命令查看动态设备树文件的加载状态。& p! m! O5 _7 h# A
    Target#cat /configfs/device-tree/overlays/full/status
    & {7 n8 [: t4 R& n- G) d0 ITarget#cat /configfs/device-tree/overlays/full/path# e5 Y0 ?3 x" u6 F- G$ t  p. a* G
    ( H; c6 u9 N) g- u# T; g1 ~5 H
    图 264 M$ ?; r8 n& _/ u* f; B. h

    1 G2 H. v: h6 N; F  Z( K
  • 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 01:27 , Processed in 0.187500 second(s), 23 queries , Gzip On.

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

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

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