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

linux学习之路_or1200移植linux

[复制链接]
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2021-7-8 11:18 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x

    , I5 _1 O/ j6 p; K. N上节我们修改了适合自己开发板的 u-boot 代码,调试成功后我们就要固化我们的代码到 flash 上,我板子上的是 nor flash 在 u-boot 上的信息是:
    + t: o. V8 D( G1 S2 p' c
    7 G# }( @: S1 @0 M/ Z
    9 O% V$ ?5 I$ W% R( f2 V
    # h/ ]+ D+ p6 b) z  f        这表明基本上flash是调通了,然后按照下载代码的流程将u-boot下载到SDRAM中先,然后再把SDRAM中u-boot程序代码复制到flash中,其中用到几个命令,flinfo,erase,cp,protect······
    2 X' K- x. x" i0 D
    ! _* f3 X+ w5 s        首先,我们将整片flash擦除干净,看看u-boot的erase命令如何用:. ^3 \% N4 Y& @4 }. H7 G
    * t5 C$ N  {5 s

    ! D4 ]# G# X: _! {, p: v9 f  N7 j1 w( E, z1 y( K* W1 j# b
            直接地,erase all即可1 L2 K$ b" R+ n! g% T8 N

    3 M9 Q+ _/ n! K! F% R        然后,我们下载u-boot主程序时的地址是0x100开始执行的,看看0x100处的代码都是什么。
    ( W, z3 G4 v7 r' d2 `; q; q& \# O9 h/ @1 M: E, ^, ~; D

    * N4 w' w" m! p& C! g
    & C- o+ G" e: L0 l) @+ q        这些就是复位向量的二进制启动代码
    " I% X- g6 d" i! r- x$ n% e1 |+ T
    + r. A1 w% s4 {7 j: d! `$ ~" Q        好,接下去
    2 {& R  `. h+ V$ a1 q  \+ @' w9 ]4 J- N. j) u
            我们要把flash芯片的写保护给去掉
    6 q" ]; L9 {" N$ t- V0 L
    ( M# ^% A) \. s( V* T: H ( C, J# w* L- d8 R; C

    + A- {$ Q. E: P2 Z4 e) G* @0 ^- c        也是直接地,protect off all 即可, M! w6 S' p' I; i& f

    % S, A, a" F8 r; C! J6 R2 Y" _- N        再然后,就是要把在SDRAM的u-boot主程序给copy到flash上面了,现在回到之前一节我们修改的u-boot代码,可以把关于flash有关的选项打开了。
    6 \( A& t, d* `* J- Y! n
    3 |% P: V/ q$ v( f, a        首先是异常向量的relocate
    # y" ^# X' M  j: V- i8 w8 h( o4 F4 w0 `* k
    4 O* {3 _3 A& a: U. N- R6 u
    0 G& ?: M6 G+ o% t* Q" e9 Q' ^
            然后就是u-boot环境变量的存放位置,由之前的SDRAM换成flash
    # s6 T$ z# g) d" n3 `4 K3 N& c) |0 A$ y9 B8 @

    # y# a7 z, |3 e/ n7 r, c. H* P5 O- `# f/ P
            好,妥妥的,重新编译,下载到板子的SDRAM! @; S3 j0 P2 H! p9 ^
    ' H' s  F4 o# D1 \% p* U9 R5 l
            然后,解除flash的写保护,protect off all
    % u, q' \/ @% }8 n) Q$ h/ z) g& s9 l! S1 O& B
            接着,擦除flash的所有数据,erase all; G2 G: ~( u! `4 Q( z# S' R- ^
    7 X, K) R; Q) p* X6 Z/ Y* p
            再来,看看flash的信息,flinfo,得到应该是所有的sections都没有RO标志
    : B- w4 q  ~9 J, t7 _) {) s0 ]. s8 A+ M) [
            再再然后,就是复制SDRAM的代码到flash上面了,用的是cp命令,这里注意一下了,由于我的板子的nor flash是16bits的,所以使用cp命令的时候要以half-word的形式复制,如果flash的8bits的话就要以byte的形式复制,32bits就word的形式啦。) c' e  i( h% y9 I6 d9 \- O& t3 L: n

    4 u% w: X; W4 G2 S4 j9 t) D  ^3 b1 h        然后在编译u-boot的源码目录下打开u-boot.lds、System.map、u-boot.map& O2 d1 x! l0 ^$ T* R2 S
    7 R1 G; ^  {. w; }7 b' I" _# k
    1 O6 v% C, W2 s7 _% @
    . X* Y& \+ Y* Q! B2 V1 z3 c) G
            看看u-boot是如何存放段信息的,然后编译出来的u-boot.bin
    : d: V; V+ n! Z4 k" S- \# k7 _# f) h5 m" F' }4 y
    ; U) N3 r, i" d( V
    2 u7 M0 q- F* j$ _
            只有186K,按照我板子的芯片来说2 v8 n* t) ~! N5 P+ D3 Q
    5 M8 b; |6 [7 S! g

    - G% \7 y  {4 S0 u% d2 Q5 m
    / s8 n- x. R9 N2 n# C1 k2 j. }: I        8M,64sections的话前4个sections存放足够了,然后第5个存放环境变量,这也是在编写/include/configs/******.h自身开发板时头文件定义的环境变量位置。6 m  P: i, P% J6 [

    # Y/ v8 d3 Y0 H  ~0 W3 l 0 w4 q+ e5 y9 k* d& h, z% u
    8 M" z2 i. i/ O. g& C; m' s9 |1 }
            165行定义的是环境变量偏移量,170行就是用4个sections存放u-boot代码。4 S9 m2 j( C' ~1 C- Q' d. F

    1 j" q; [; T% C( M7 U" p) M        OK,现在就用u-boot的cp命令copy从SDRAM到flash复制代码了,u-boot的cp命令如下:
    / g, H2 W  u/ Q: T$ g) D+ ], Z& `, m& U$ j6 h/ h

    , |$ {; W) [! I/ }' X% F0 M# @- F  o$ ~/ A8 P9 ?6 `
            由于我的flash位宽是16bits,所以用cp.w每half-word地复制,然后是4个sections,起始地址0xf0000000,结束地址0xf007ffff,范围是0x7ffff& h1 x9 N1 o7 z* x; {, r/ k* u

    . g6 ~/ A* @4 B2 w$ J8 ~. n
    5 [9 ^0 O* c: e  t. d' k5 t! g- }& q9 e( z9 S
            所以,命令是cp.w 0x0 0xf0000000 0x7ffff
    7 w: ]( t+ p" F" J9 `2 c" l( e1 c8 Z( d( D7 i; X
    4 ~, V' n7 p# s8 n% B0 ?- I! y

    : y1 S1 ?6 M- Q9 a% p        完了之后reset开发板就可以看到u-boot启动信息了。
    / P1 A4 Y8 D5 \  N
    / l7 F; u4 i7 A1 R# |# c2 H. q5 I        上次移植u-boot的后半段就码到这里了。改天把在u-boot起来之后将download linux image的步骤贴上来
  • TA的每日心情
    难过
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2021-7-8 13:55 | 只看该作者
    _or1200移植linux

    该用户从未签到

    3#
    发表于 2021-7-8 13:54 | 只看该作者
    linux学习之路_or1200移植linux
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-7-8 13:30 | 只看该作者
    or1200移植linux
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 12:53 , Processed in 0.171875 second(s), 27 queries , Gzip On.

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

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

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