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

DSP 远程升级 / Bootloader设计指南(二)介绍一下c_int00

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
目录
' w  Q) a) D1 V4 I- E' r; K* X4 ?# g- c+ n8 i) U$ S
1; V, j1 h: f. D" f5 I$ E
初识Bootloader

2 A! o) b2 D* y3 Y- H$ V/ E* T0 j! f1 c7 [, ~
1.1 一次Bootloader2 N; Q' J# W( q

% e7 T: g) r2 E. [1.2 二次Bootloader3 h  ^0 W9 W6 \  S! |
* z' b$ W- ]% n% y: s
1.3 DSP上电引导过程
: C) E4 d% q% o  `4 d- h, ~. q. A& P
: c" s  Y9 q4 Z2 h/ f2# C1 V0 |  @/ i( X7 i- G
关于c_int00

' K6 R3 a& D9 l- C) u9 i; h0 X# F# ]9 J* G* y. V" j5 O& |& L$ m
2.1 c_int00完成的工作1 ]! O- G  Y, K4 Q

- }9 U. k# B& T$ c2 d8 J7 R2.2 系统初始化
& |, H+ r# V3 ~2 t& T4 w& R4 U# n7 d4 G5 ^0 N
2.3 全局变量初始化
; X% g/ }/ j! I) E! Y7 r' Y& h: Z7 S7 n  P* v* O) u
2.4 全局对象构造( D$ ]/ V1 k. w
" e2 P! B2 ~: z3 M% ]" t# G5 a. ^
2.5 mAIn函数与exit函数的调用8 I! [6 E- M# f* @2 E
7 M" W+ e: r/ ]" [2 b5 q/ I! O/ Q7 r
3% ^+ y' w# k' M- Y' G
CMD文件与DSP存储空间
7 p# i+ e1 h* ?( o
' X9 n( |0 O0 X
3.1 MEMORY和SECTIONS指令
8 M/ {- ^, X( E; G& ?. s1 T, y7 ]0 c4 ^' ]- F7 W* X! A
3.2 程序与数据“段”
! E9 l" W7 O6 X) l
8 K' P3 I3 F3 R46 p9 m2 \+ r1 v& f3 X# d
Bootloader数据流

) Z- d5 D" H1 R+ F. U4 V# k0 A. g/ ?. ?
4.1 数据流结构6 _) b( J9 v1 x& Q8 @! }
2 L& W  b2 d! T# |6 c) ~
4.2 16-bit数据流- v7 d. M2 {; _' K6 F# [! ]% y) E* f

6 M  N4 |/ W( Y% m4.3 8-bit数据流
/ T4 V; g: w0 V" ~! I
4 g4 ^3 B4 w  x9 D* e9 ~5
8 x  I; E) u- [FLASH擦写操作 —— FLASH API的使用

7 Y, |; T* S! h& E
/ Q; Q& y) i& Q4 H5.1 FLASH操作的重要特点1 m" \. j. m* x  f, n' N
! x( S( Y7 K8 S/ c6 b# l; G
5.2 FLASH API使用步骤
% |5 M8 R. |- h, t+ h  H/ e( V$ y; L# ~$ L% A) i$ s9 v% T
5.3 FLASH API常用函数使用举例
! a; S# ^4 O! ~3 H% H* q' V- z/ G2 H; c( S
6
9 {6 s/ L- v5 ^; ^  E# ~Bootloader设计过程中的9大关键点

* P* |' U9 s7 m6 W3 f' Z' L; l# Z  }& k: \! ]
6.1 Bootloader程序在升级过程中不被擦除的实现方法
7 E  H! E; h8 _/ r8 ~9 w1 h) K2 I7 ~
6.2 上电后先进入Bootloader再跳转至main()函数的实现方法
: M: s6 Y( m8 [  |/ g) @7 U. K) r& G- [9 L8 b
6.3 Bootloader程序作为CCS应用程序工程一部分的实现方法7 H! n# H0 H: i2 G! r" A/ s" y8 r
- l) J0 Y6 m2 }5 w/ U
6.4 Bootloader与上位机形成交互式通信3 e( M1 w: E( u1 D* W+ q* m+ {

, ^& W, B2 W6 [. G! ^6.5 Bootloader程序能够对接收数据校验的实现方法" w/ b; m' }8 f: t
# w# N3 {8 F" l, C! \* K- M  l9 w
6.6 在数据出错等情况下能够自动重启的实现方法
2 z* e: n6 @- C6 \- Y2 p8 }$ x' \- W1 C; G
7
2 u( j7 y' z/ ?  p8 YCCS输出文件格式 —— ASCII-Hex、Intel-Hex与Binary-Hex文件
' m: I+ i2 s/ R) J( O* @

' \& g/ C: K0 t# M9 y# I7.1 CCS配置生成Hex文件的方法, G, D9 b* M! G# t( R  E8 J% _

3 i; z/ W5 o; k/ H/ N) p& Y# }; ~6 L7.2 ASCII-Hex
4 c; z4 A. s. i$ }- q2 r3 g
1 Q; h$ k* C! ]) j9 K7.3 Intel-Hex  F$ m, @5 y7 d0 e1 _7 @- L0 B
2 o4 z  _1 ~1 w" `5 M4 P! @
7.4 Binary-Hex
9 Q  H' ^( s  G3 C7 n  D: S4 `4 {- }3 e- o0 m; j8 s) W
# E# K5 [  V5 g9 a6 n4 y. k( W
% Z( W+ N  J; u# H  ]
$ w$ ?- j3 ^/ U, }' ]* ~! u8 @
2 关于c_int00& t/ B% |$ |; k
; r/ z, \2 a+ R3 v( Z
“c_int00在跳转至main()之前都做了些什么”( }# i+ _/ b9 ?# X  p7 d
- w$ s$ h( ]% {! l/ X& p( o
在设计Bootloader时,非常有必要对c_int00函数进行全面了解,因为通常会对它进行改写。
5 U3 r5 o) W) q, i- ~' |1 {4 E& Q0 u$ h" q
c_int00(也作_c_int00)是C/C++程序初始化代码的入口地址,完成建立C程序的运行环境。它是运行支持库(如rts2800_ml.lib)中的一个重要函数。' ?; [3 t  Y7 e

8 a# C+ B' w- e2 u0 [0 Q; {; O" a8 fDSP上电时,由Bootloader负责引导至c_ini00,具体引导过程见1。0 F2 G* e! T6 T+ w5 _: p

% W2 Q. @: ?* K; Z2.1 c_int00完成的工作4 s* v4 i; ~1 b9 R7 d7 i5 l- _) ?

* @. a: E6 S# Y4 A6 E- c" M1) 定义系统栈.stack,并初始化栈指针,配置相关寄存器% F+ ^# w; \" {) _3 G9 A! \, S

& r: q* w$ k* W2) 初始化全局变量(.cinit)
7 A) j6 h9 y" [( \8 ?- ~  O1 g1 n2 @* H5 {
3) 若使用C++,还会完成全局对象构造(.pinit)
9 Z+ i" O$ f! l! [& d, f, D) O0 b7 `+ q! r$ w5 Y/ S0 z
4) 调用main函数运行C程序" i& Z: b/ L/ H! o$ v0 @

8 ?8 b. A# I. `9 o( x, N/ E# G5) 当main函数return时,调用exit函数% N$ @* d# y5 @9 X5 I1 y5 B

) q" P9 [% l+ v) b3 \用户可以对c_int00函数进行修改,但修改后的函数必须完成以上任务。
/ b; \' e3 s( x0 C/ b4 x- _7 W8 z, P5 P; o; {0 {- U
2.2 系统初始化
* n4 v" ?  `! u) O3 ?
$ d3 n, C. z& L; ]在TI官网找到了rts2800_ml.lib对应的boot.asm源文件,其中核心内容为c_int00函数,其中关于“定义系统栈.stack,并初始化栈指针,配置相关寄存器”等系统初始化的部分如下
# }* r) m3 x% v6 c
9 i- ~, u- s2 v5 w
游客,如果您要查看本帖隐藏内容请回复

5 U  X" g$ b* W. B9 \) M& I) v+ H7 q2 }8 h8 R

" U& ]9 `% S6 g

该用户从未签到

3#
发表于 2019-10-8 00:21 | 只看该作者
很详细的介绍,非常感谢!* ^& G/ i3 \* V0 Y9 l9 \

该用户从未签到

4#
发表于 2019-10-8 21:58 | 只看该作者
谢谢楼主分享3 N3 Q) W$ |, N2 r( g! Y6 J6 E
  • TA的每日心情
    难过
    2024-12-8 15:00
  • 签到天数: 157 天

    [LV.7]常住居民III

    5#
    发表于 2020-2-22 14:30 | 只看该作者
    讲解透彻,值得收藏
    / n% D7 u* ?2 ]& h; A. K

    该用户从未签到

    7#
    发表于 2020-4-23 15:14 | 只看该作者
    想看看内容( }3 {- R0 C9 z- T; L

    该用户从未签到

    9#
    发表于 2020-4-29 13:24 | 只看该作者
    DSP 远程升级 / Bootloader设计
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-26 12:43 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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