|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
目录
2 o" W- |/ |7 c/ a% @+ x `' A. S3 Z* S( }# l- O+ I) j
1
0 G; A1 Z4 r# j u' J( o1 S# L初识Bootloader' i* t8 l$ v: Q* @# P
* P+ j- _# C8 L
1.1 一次Bootloader D4 w( R) U' z$ O7 @
- c$ C6 z2 R: }$ R0 T2 B3 Q1.2 二次Bootloader. U H' C4 N+ V; h
c# t Z8 u4 L
1.3 DSP上电引导过程. L2 {# U+ V9 n
* F3 K- b. Y4 W8 I9 r i, c2# v: n8 ?) Y$ r" d. y/ `: }1 u
关于c_int00
2 P& b8 C: Q' u& N' I9 \8 k
6 w1 _& w+ x; T2.1 c_int00完成的工作
+ X' T2 {! a: V# l9 k! W4 P) `0 [/ g8 k! x0 C' M8 [1 [5 ?+ h
2.2 系统初始化
: t2 W" V8 @* o
8 [% U( {9 S) B; X& w p) W2.3 全局变量初始化
/ E8 O$ U D# z$ W8 ^, `) b2 P- c5 [9 Y: r8 i% l0 i8 P
2.4 全局对象构造
% i: o3 x) U+ Q& l- s# _
% w- G/ ]# J& F$ d2 g2.5 mAIn函数与exit函数的调用
# c J7 V, {8 ?: T$ e+ O7 i! A, A
& f: ~ q1 \4 A/ @9 [3
0 z9 a: S) D0 P7 a* mCMD文件与DSP存储空间9 A7 K" ]4 a9 \# v
" T; i7 A0 ^- \2 g; n1 d
3.1 MEMORY和SECTIONS指令* U1 t8 G8 t1 D% O. B: A0 H
' _+ f; U$ W- L; s |" C- R' F2 R
3.2 程序与数据“段”
/ l& t* T' U! b2 D6 x7 `% k7 o/ [, |9 Y/ l
4' a3 |5 V. u5 j) G$ Z, |) f
Bootloader数据流7 k/ v8 G: y4 d# z2 p. m$ u6 J
7 m2 ]9 z7 D& a; \' \3 m( X5 {4 i4.1 数据流结构
! W. e" S7 j0 `" V( Q* v, E+ `0 w$ L$ t9 Y& P5 y
4.2 16-bit数据流/ I* m- g- o! p$ ?+ \0 U
' [3 P/ ]7 G1 Y8 b
4.3 8-bit数据流0 {9 U% S# Z0 q1 D- M* J. q3 r3 t6 G! m
" C6 a8 x( p% W) u
5' k! ?) _. E8 n. `5 v. r. e
FLASH擦写操作 —— FLASH API的使用
' W1 R% H3 h% E- W6 u( D# ^! Z
+ A" P$ ~* U& o. V# A* ^. ~5.1 FLASH操作的重要特点
# y, G4 n2 A8 w# M$ u: E
+ V5 b3 i# ~3 [4 K3 ~8 g9 e% w5.2 FLASH API使用步骤
7 X$ B3 J" n' \9 M& B0 l4 J- f0 c, Y& B* Z+ Z5 \! i
5.3 FLASH API常用函数使用举例
3 Y( q* m3 x; N3 e1 ?
. o# W3 y! M J/ A. x( l. W6
: N9 i4 l$ x; k0 ?8 j i W7 E5 p pBootloader设计过程中的9大关键点
2 J5 { d: R0 z7 m& {& a( b' M3 ?; J" S* l9 n8 R
6.1 Bootloader程序在升级过程中不被擦除的实现方法
5 l' f5 _5 ~5 \. a
( K, k8 A* q- R- k( V+ B+ b6.2 上电后先进入Bootloader再跳转至mAIn()函数的实现方法' Y+ t3 e [2 Z9 U
* w9 q( i5 N5 E; d6.3 Bootloader程序作为CCS应用程序工程一部分的实现方法
- H% l* z$ ?6 @: [0 S. W R9 N, Z& q: ]( c# E J
6.4 Bootloader与上位机形成交互式通信
[9 d |9 d. q' u& B, _1 X
) S P/ u# x2 @8 F. ^6.5 Bootloader程序能够对接收数据校验的实现方法
* E+ c" r% ]% o4 f( i+ K- Y# x/ I Q5 ?+ M. t2 K& s9 @( n
6.6 在数据出错等情况下能够自动重启的实现方法- J, `. d7 e d
1 r5 ~' l* V2 j# Y6 y5 ]# v
7 m/ _* S' q6 S3 y% y7 A
CCS输出文件格式 —— ASCII-Hex、Intel-Hex与Binary-Hex文件
2 w: @/ G* `# c+ N: ]4 M& T# C
" K0 A- {( h; E3 L7.1 CCS配置生成Hex文件的方法* L; o3 l, m0 w3 U/ P+ o# ^
# D* D! [5 u' }! \9 M! C1 T8 _8 n
7.2 ASCII-Hex
2 H9 n4 v! S# _$ W$ m# _$ f& b5 K; y( i* H! q' T, u( Y
7.3 Intel-Hex* A e; V6 ~8 a y, H9 X
: I$ d3 O) z# U! R) |7.4 Binary-Hex
3 H9 T% T5 @2 \5 F' e" G8 X
7 y8 z6 s4 N M4 z) Y( g
( r1 @! f/ c) q0 h- n; B
) t% V5 K z6 k, V& v; n
8 ]0 J$ f( _( ~6 h& I1 W
" {8 `+ d& e" |/ O4 d5 p2 v" e7 b4 Bootloader数据流
0 M. I9 `; y" F0 @! G- v. ^. }, Y1 [, R6 `: f' X
“在线升级程序时,程序以怎样的数据流存在”
/ R; g/ ^: I1 s
# }$ H3 g6 x* h% i当我们设计Bootloader时,在线升级程序通常使用的是.hex文件,.hex文件有多种类型,我们可以依据需求进行选择,但.hex文件中的数据是以固定“数据流格式”存在的。+ Q* \8 I/ _4 G1 {: `
2 o1 B" _5 Z, ^7 k- k# v通常情况下,Bootloader数据流分为16-bit和8-bit两种,二者大同小异,只是数据存储类型不同。更多关于Bootloader数据流的内容请参考《TMS320xxxx xxxx Boot ROM Reference Guide》。
% D4 e) m0 Z, S) B
9 @2 D l5 G# ?" R; K& t0 ^4.1 数据流结构- j/ J8 A% X( b, I& H- I2 ~
) O( \' A/ p- ]. r0 ?% xBootloader数据流中的数据都采用16进制。! |' }. P& i; l) a `
! _: S, D) k+ P数据流中:
/ ^! p: R8 d. g6 O
8 `2 p8 y1 c5 ^$ M0 [# b# r第1个16-bit字为关键字,用以表明后续数据的宽度:8 bits或16 bits。关键字0x08AA代表8-bit数据流,0x10AA代表16-bit数据流。4 l/ _, X! Z+ c- B3 S# @
/ M |; _1 i" P) A" j5 h$ t* B
第2~9的8个字为保留字:0x0000。% L( w$ w- T. L' t4 v
: s; F- Q+ D( y$ \2 s. q! O8 y8 `第10~11的2个字包含着22-bit的程序入口地址。
# V k* u* t! l$ p4 G. k( n) B" X! E7 z% r! l, s! r5 H
第12个字代表第一个数据块的长度,无论是在8-bit或16-bit数据格式中,该长度的单位为字(16-bit),也就是说在8-bit数据格式中,需要前后两个字节拼成一个16-bit字后进行数据长度统计。
. g3 k( s/ @7 m- V7 S6 _8 K. z# v, A5 F, H
第13~14个字代表第一个数据块存放的起始地址。
" Y5 U/ l- }. ^$ R: H8 m' ~+ D7 j |+ @5 D# ]
后续的字是数据块的具体内容。1 t% T4 a B* g, B% ?
1 [8 Z: V( X! ^# k当一个数据块结束后,紧接着的字分别为下一个数据块的长度、存放起始地址、数据内容,如此循环,直至当数据块长度为0x0000。- x+ ?5 B' |3 w: H: t# g6 T
, d; u' h2 x& P$ M7 n6 d7 u4 T也就是说Bootlodaer数据流必须以0x0000结尾。5 a# B2 q3 C* m+ `
8 }7 v* l, a, i. j5 n4.2 16-bit数据流$ G2 ?5 d! ~2 `' V) k
& g" Y& X# \( e. ^% H% `
& |" @ K( D7 D) ^
! B+ d2 t( d4 _; G$ k% N' U, H3 w! V
|
|