EDA365电子论坛网
标题:
DSP 远程升级 / Bootloader设计指南(二)介绍一下c_int00
[打印本页]
作者:
mytomorrow
时间:
2019-9-29 15:24
标题:
DSP 远程升级 / Bootloader设计指南(二)介绍一下c_int00
目录
" N: Y5 _/ |, w& r% e/ X' ~" J
! [$ A' K: O6 W, f" p
1
6 F; X E# g) q- j& A: }
初识Bootloader
2 B* g5 t" H. ]; a! y
6 A+ Z8 l; I, m8 d' s6 D# C& m& Z1 z
1.1 一次Bootloader
7 k1 j. e+ ^6 O- P( }- w5 H/ t5 y, q; [6 i
& k m, @3 O1 U! s
1.2 二次Bootloader
% l' D2 |& `, W6 f& ^# X1 }
3 S- r; }9 W" Q: r: z, `' L% T+ V. Z
1.3
DSP
上电引导过程
) L4 r8 Y; ^' p3 }) P
3 {! [& r! g7 U
2
7 F( M$ M4 X8 u0 C
关于c_int00
4 k/ G8 c0 Y, J s. n
- x9 h! s+ d* }. @
2.1 c_int00完成的工作
1 Z$ q& [8 E* P2 j ?1 \
( ~5 o& |' [& W) [
2.2 系统初始化
: W. C& ?3 N% E5 m3 E
, j& Q" V; M5 c1 M
2.3 全局变量初始化
& w& A/ G7 J$ @
! y9 V6 M3 \& E( v
2.4 全局对象构造
& L; G( g- Y; H" g1 y; M: n
8 H+ e5 |) m" V, i
2.5 m
AI
n函数与exit函数的调用
1 z3 l3 K) w( M" ?
/ q/ a& \$ i, E9 o
3
7 c% J/ \$ K5 Y6 K: q& o8 m
CMD文件与DSP存储空间
3 @# `; m/ r; A/ ?% D+ @
+ Y% g4 M9 N7 l" X
3.1 MEMORY和SECTIONS指令
Q+ M. O" `1 f" U! K+ w4 A
% D5 ] A. s8 {* X7 O; X' e) W% R* J
3.2 程序与数据“段”
: W7 x3 @ j% V
5 I" [: X6 P3 E
4
/ l+ b6 _/ B6 v0 v' A2 F
Bootloader数据流
8 Y" s \, ?- e
# P! R2 u2 G. ?7 o
4.1 数据流结构
4 x% N3 o( p3 d
. t8 n$ i; U# g; |
4.2 16-bit数据流
9 w* I- Y2 o% s0 t, N
( P' T: V$ [) p6 y& _% S
4.3 8-bit数据流
3 N; N. A1 F7 c& @* }1 d
/ ? y9 j9 D& b+ |$ N
5
" ]6 I8 f8 j% l8 e) b: ]! Y* m
FLASH擦写操作 —— FLASH API的使用
( `4 ]: _5 e Y3 j9 G+ q) A4 I+ y
! h `7 s4 b( `4 G5 X
5.1 FLASH操作的重要特点
2 b. k4 { J' ] F9 d
: M0 ]6 H. v m6 W
5.2 FLASH API使用步骤
9 X8 V3 H5 M* q/ Y) n
- Z. n1 z: K: [9 @0 q" C7 V L& L
5.3 FLASH API常用函数使用举例
% C0 ^8 r* X6 F/ U
, |' S" B( I6 }1 Q
6
% Z8 ]" `3 [3 X1 X
Bootloader设计过程中的9大关键点
8 D7 C2 D# Q; m5 ~
( a! V8 m& g6 x/ L0 ?
6.1 Bootloader程序在升级过程中不被擦除的实现方法
/ W# q. q$ a1 {& N+ G, {
5 D9 q V1 O7 L8 \ }9 M! w
6.2 上电后先进入Bootloader再跳转至main()函数的实现方法
" `* D) e( [4 y7 e5 ]% o
) }3 d* a8 X7 O
6.3 Bootloader程序作为CCS应用程序工程一部分的实现方法
: d0 h6 W3 [) w
: Q/ F' v X8 ^) x; t1 Z
6.4 Bootloader与上位机形成交互式通信
, c" Y+ [# F4 `( i3 \& l
6 {: U0 T9 P* ^2 F4 U) b/ i
6.5 Bootloader程序能够对接收数据校验的实现方法
/ d/ k7 f2 j# d% z' x& z& w/ t
( s8 J0 D! }5 R. E8 u; o
6.6 在数据出错等情况下能够自动重启的实现方法
2 Z1 u1 p! x$ L5 `
/ z3 _$ r4 c7 J# K0 V- e
7
/ A* {* |2 O$ p8 J8 o" K! M; [
CCS输出文件格式 —— ASCII-Hex、Intel-Hex与Binary-Hex文件
1 d; i3 x; I2 v1 P! X' j
# f& x! @% c# f" q, k8 z6 S+ S7 |* w
7.1 CCS配置生成Hex文件的方法
?1 H9 t7 W0 B# t
7 L; v. K4 b- j2 I5 H: X
7.2 ASCII-Hex
5 H2 F O0 e: M
+ y* W0 g# R5 W
7.3 Intel-Hex
5 A6 Y! M8 @1 H
. F6 [" K. _; z
7.4 Binary-Hex
4 O) V" D3 I2 H2 i
! d6 B7 L* v4 @0 P3 O( S/ M/ m
: @ j* |: i" `$ }1 u4 n3 m
4 G3 s, Q+ n; V9 e/ } w5 ^
6 D; p: @5 t7 ^9 E1 F# G
2 关于c_int00
9 X& _1 K# o% b& `# v
- N; u5 ]9 ?4 _
“c_int00在跳转至main()之前都做了些什么”
( X7 N- A$ m8 M, D. `+ `- ^! G6 N
% S$ F. Z# C% I
在设计Bootloader时,非常有必要对c_int00函数进行全面了解,因为通常会对它进行改写。
, J) x5 e$ N! o' J9 a0 F, g
0 w# y* O" T* _5 F' v7 X
c_int00(也作_c_int00)是C/C++程序初始化代码的入口地址,完成建立C程序的运行环境。它是运行支持库(如rts2800_ml.lib)中的一个重要函数。
' r% Z* `5 b" | B% m: n' l4 G2 m; X" R
/ B4 {8 p. N* X3 D
DSP上电时,由Bootloader负责引导至c_ini00,具体引导过程见1。
* ~0 ]2 v: r$ V; P; K5 X
6 B' n. d0 p; G0 c
2.1 c_int00完成的工作
2 _+ e4 a+ U j- o& t
4 A* x" a! _* d+ n
1) 定义系统栈.stack,并初始化栈指针,配置相关寄存器
0 ?8 a6 D/ T; P/ o, r0 G" |. h7 x
- T9 b: J" |1 D/ _8 Q& @0 S! V
2) 初始化全局变量(.cinit)
8 ~; |. ~/ Y& g s9 i* Q
& ?% A3 y z/ Z+ n
3) 若使用C++,还会完成全局对象构造(.pinit)
' ?2 D( A6 S; L
* [$ l" G3 ?1 G
4) 调用main函数运行C程序
) l2 n7 J r- @+ P% a: K+ y
' v1 W2 h1 E7 j, [5 M
5) 当main函数return时,调用exit函数
" p! } n% {3 c8 `% G7 G
1 }. f' u: v# Z. f# g* d- j
用户可以对c_int00函数进行修改,但修改后的函数必须完成以上任务。
. L; ~$ i4 I3 F# k9 \+ l4 A
6 i, V/ V8 o8 W; [+ ^
2.2 系统初始化
% x Y! i; x2 {" r; R* P, q* Q
8 J4 {% V' |. @, ~8 G
在TI官网找到了rts2800_ml.lib对应的boot.asm源文件,其中核心内容为c_int00函数,其中关于“定义系统栈.stack,并初始化栈指针,配置相关寄存器”等系统初始化的部分如下
/ p9 V/ p' Z R- Y
! R e6 F) n, x# k8 M+ E9 R
0 S% r" S) W; ~' z. _, H, M
8 ?; x7 W+ f" { o4 H
$ ]; l: x$ u% A% g- M
作者:
wu68aq
时间:
2019-9-29 19:05
看看。
作者:
lienmalianNW
时间:
2019-10-8 00:21
很详细的介绍,非常感谢!
* C# d) \) `) y+ q4 \
作者:
金木
时间:
2019-10-8 21:58
谢谢楼主分享
1 u8 Y! J) x4 W% A& M Z
作者:
依利达
时间:
2020-2-22 14:30
讲解透彻,值得收藏
( `# M8 x( u! o* B7 i4 J
作者:
thr1573
时间:
2020-3-5 15:30
看看
作者:
GilbertDouQiang
时间:
2020-4-23 15:14
想看看内容
% C2 V/ S" W0 r/ i
作者:
toby417
时间:
2020-4-28 22:51
学习一下。
作者:
ExxNEN
时间:
2020-4-29 13:24
DSP 远程升级 / Bootloader设计
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2