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

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

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

    [LV.1]初来乍到

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

    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: @- Q0 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 A
    Linux系统启动卡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/ Q6 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/ |
  • 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:42 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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