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

DSP 远程升级 / Bootloader设计指南(四)什么是Bootloader数据流

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-9-30 09:44 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

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

x
目录
; J6 E6 S0 S. {* n/ t; U% }, D
8 a+ W1 N$ J2 d; m1
0 i# n8 Q6 A+ R: ]' I初识Bootloader
2 ?" \+ `/ {! l" v

" Z# {$ Z, y% l1 F0 r  U1.1 一次Bootloader
9 F6 n" ^) V. G+ `. D
* k: g2 @5 }' E. x. X1.2 二次Bootloader/ |: K1 x, X# J+ _/ v: l

$ C4 T* i( g% ~. }. Q' x$ ^, F1.3 DSP上电引导过程* m# L- y0 o( f- I; Q0 H; i$ ?
5 B# Q5 p2 q3 P3 s$ b/ |
20 t$ K8 o! ^1 l7 S. E4 N% s! \" ]
关于c_int00
  B! s$ F' ^+ _3 k& }! D. S

. N; {4 U+ o4 J2 k2.1 c_int00完成的工作
+ X# d3 @% U( p$ Q" Y; E' Y, _
2.2 系统初始化
1 W& ], S; O0 [* V/ C$ C
+ C. v  p3 G/ r2.3 全局变量初始化( R5 A! Z4 j; c9 [+ G7 @
5 M0 W( C  ^3 v2 G
2.4 全局对象构造( f3 p6 f, L+ z: e& N- x, q8 Q) @

! N5 s) s% J& E9 q6 K$ _2.5 mAIn函数与exit函数的调用
% c( s8 D# ]9 ^$ ~3 r' [  k- J9 P: c
3% m/ ~' f! A& i  p( |5 F: |
CMD文件与DSP存储空间
, h9 {% I1 r  R6 a1 ^$ N9 d
# A1 x. m2 N1 W) N, s+ F$ l
3.1 MEMORY和SECTIONS指令
+ Y# f( |9 k4 ]+ ?
* b' y" H' [) _+ [& s4 v  x3.2 程序与数据“段”: y3 r9 @& |" c

5 o' M2 J& L2 _( \, f5 p4
3 b5 k1 D5 I- c- S/ h5 q0 UBootloader数据流
. A- X. z+ C5 C' L3 T7 y- D0 B. I

# a/ q; ?0 T0 s+ m# {7 I" L4.1 数据流结构6 v0 P) F7 c! e7 Y

3 M: L, V( P- a, a% \8 @# N4.2 16-bit数据流
* g9 J+ C6 H: M4 C
2 n/ u( p3 P; c$ m4.3 8-bit数据流
  U  [2 n: U4 A0 t! S8 I  b  v: a! o! X/ |3 H2 f* H$ O9 z+ A' C
5
9 f$ H2 z# x# SFLASH擦写操作 —— FLASH API的使用

1 ]& J0 w3 d9 n  o9 j8 \+ i- m: ?1 E4 T3 |* a* z% z
5.1 FLASH操作的重要特点" m% B7 r: _# x& x  V

, C/ a' u! i5 o+ d% r' h5.2 FLASH API使用步骤
5 P9 R  ~2 ~0 X& @8 ]4 X6 a1 a6 C9 F( ~
5.3 FLASH API常用函数使用举例' R7 U9 X) X: {' ?8 |

# x! D$ p, l; ]# T" e. N6! B0 B. [) L/ q. z0 K
Bootloader设计过程中的9大关键点

, B7 _; u. w! W5 y! ^% m/ h) M
7 E. f1 A" h- p. r- H0 a* q( n+ i, C6.1 Bootloader程序在升级过程中不被擦除的实现方法
2 V# N: Y/ i! f% j" ^2 S/ n* `6 P2 P& W+ O  R! H9 q
6.2 上电后先进入Bootloader再跳转至mAIn()函数的实现方法
- p( R, X: [2 T$ s' [: ?0 p) X# Q0 d* G
6.3 Bootloader程序作为CCS应用程序工程一部分的实现方法
0 O+ L: U" [2 n: D4 |/ G) a/ h, A' v" z% }. L0 P2 l# q' ?. c& O0 I# y
6.4 Bootloader与上位机形成交互式通信. a6 N2 T/ A! I! U7 a, l
! H7 Y3 H: l5 c/ `
6.5 Bootloader程序能够对接收数据校验的实现方法
8 t+ R, x! s5 ~# `7 M/ C0 u" [7 o
! W% F$ ]; x* k& O& {1 j6.6 在数据出错等情况下能够自动重启的实现方法8 F; C0 x( z% C$ D* D& x
$ \. O8 b! W, w1 d  n$ S
71 N9 ?8 Y  }2 c0 b* _$ Y0 }/ `% ^
CCS输出文件格式 —— ASCII-Hex、Intel-Hex与Binary-Hex文件
# H3 r) d" F4 i7 i0 D4 i
/ u7 I( d- }% p, A9 c/ n
7.1 CCS配置生成Hex文件的方法7 T* w& I' `6 b/ t' I; B
' U) F# i" v. ]9 p) y
7.2 ASCII-Hex
' j$ r) ~/ F5 `& L# W1 ]& K( [9 L' l! [% J4 i. X, U
7.3 Intel-Hex
, ?8 v. `0 p$ `4 ^$ P3 o- W- q
# R8 y" v* B& a" z6 K$ T0 f5 R7.4 Binary-Hex1 G0 W9 \6 a: E) ^

+ g% Y2 @' ^3 `: e

0 r  I0 J4 f1 h  t, M, h, w( M; u6 b7 N8 [5 r$ k

$ m$ M" q2 S; V' }" Q* y; o8 t
- r' ]. h. M7 l' E. w7 U4 Bootloader数据流; V9 B1 O- o* l% s2 f$ A! n
2 j: {! |3 Z6 {! d
“在线升级程序时,程序以怎样的数据流存在”( ^  f& ?5 a! H2 i# j, ^- z" V
$ R, ]! J$ ~+ ]6 R2 A+ s
当我们设计Bootloader时,在线升级程序通常使用的是.hex文件,.hex文件有多种类型,我们可以依据需求进行选择,但.hex文件中的数据是以固定“数据流格式”存在的。
6 \( t; ?/ M: L9 k
" D5 L$ t( C# e" S5 }8 Z' j6 E$ m5 ]% a通常情况下,Bootloader数据流分为16-bit和8-bit两种,二者大同小异,只是数据存储类型不同。更多关于Bootloader数据流的内容请参考《TMS320xxxx xxxx Boot ROM Reference Guide》。
/ \9 [' t0 ^$ }% X! J3 F/ Z) A, w' R+ j7 K" }- Y3 N
4.1 数据流结构
8 o, p, o' f$ D5 i& U4 f
- W) k( Z, ?  c6 N; X7 ]" jBootloader数据流中的数据都采用16进制。
, I. R7 i4 c6 d7 S5 [9 `  y* ^5 h  T( o) Y* l2 ?
数据流中:- _/ i/ D' f% G- ^" U9 X3 f
+ `: T" [& ~( W3 ^
第1个16-bit字为关键字,用以表明后续数据的宽度:8 bits或16 bits。关键字0x08AA代表8-bit数据流,0x10AA代表16-bit数据流。3 I( K- l7 ^/ g
; \* g' C: ?% R  L2 G
第2~9的8个字为保留字:0x0000。
, t# C- C+ \/ @, A  ^$ m  O: P3 h' l& |9 j/ H6 i# t
第10~11的2个字包含着22-bit的程序入口地址。4 T5 a0 n2 B+ r
" g2 g5 C2 h; n7 @  ]+ p% a
第12个字代表第一个数据块的长度,无论是在8-bit或16-bit数据格式中,该长度的单位为字(16-bit),也就是说在8-bit数据格式中,需要前后两个字节拼成一个16-bit字后进行数据长度统计。. Y" T. b* H+ ?" z; |0 k3 p6 o
6 ?: ~# \& n' `% e" i+ c$ r
第13~14个字代表第一个数据块存放的起始地址。
" J5 u1 R8 A4 O2 c# C" j; T, {) D% U( ~% C( w
后续的字是数据块的具体内容。& [( |, n. w& `4 f" [- [
9 G. M5 v- A5 t3 Z
当一个数据块结束后,紧接着的字分别为下一个数据块的长度、存放起始地址、数据内容,如此循环,直至当数据块长度为0x0000。- _8 h& Z! ?$ w
8 z( A7 i) [0 n5 X9 Z
也就是说Bootlodaer数据流必须以0x0000结尾。
0 i5 q9 c1 W6 U( h# n2 x
0 ]" B7 t0 H+ ^4.2 16-bit数据流% d% z. T" b. l1 x1 \9 l
% H0 v! d  k- v- H. Q# R
游客,如果您要查看本帖隐藏内容请回复
- l6 \4 v2 D' X0 |7 O/ `; {2 ]  b

' Q5 D. s  U* g' V) K
# D8 y4 ~  J6 k0 z  n' S" A. V

该用户从未签到

3#
发表于 2019-10-10 14:53 | 只看该作者
谢谢楼主的分享: e. o: P! K3 r. h. F

该用户从未签到

2#
发表于 2019-10-7 22:43 | 只看该作者
学习了,谢谢分享3 E0 g" A" [2 K5 q  I; ~' X9 n
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 02:09 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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