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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
目录
% h% S4 S. N1 k; U9 A+ H6 J& p/ p, g" N
+ e/ H0 [. i9 D8 s3 d1  S# P) m& f5 B! X
初识Bootloader
- b8 J; e" u) ^& s$ |/ y! r4 f6 D
* u3 \2 \9 j  g8 H7 u
1.1 一次Bootloader. N% X3 a  `* z1 z. u/ ^' N

. ]. a" C# e+ D- f1.2 二次Bootloader' }- L) X! x* i$ f& }

$ ?1 m- y. v& A& ?1.3 DSP上电引导过程
, o6 V! U+ K4 j+ t0 H) [' o
. a; t7 n8 j, k* U& \& `  u! v  I2
% f5 k  N, d7 }: Y4 v关于c_int00
! F8 G7 L6 @4 Y9 L* |2 w

9 b5 ~$ h' U- E! `2.1 c_int00完成的工作
4 _# N# c! O* f- q+ m9 A2 D+ h% ^9 x) r1 D  i" Q
2.2 系统初始化
/ E0 l, U' s  G8 ?% W2 N+ {- ?
+ v' p+ [3 j  ?8 Q2 Q. A1 Z' N2.3 全局变量初始化
4 m  [/ A/ _* j% i
; p+ M) F" Y! U6 f8 {2.4 全局对象构造
( x: d  D( D2 ~+ m5 c' ?- T3 K- [- U& s: l
2.5 mAIn函数与exit函数的调用
6 r. }. y  Z5 F# `9 j6 S/ P+ i
% n; c5 u/ J# u& [3
! X! l0 K% _7 \; `  _. s+ rCMD文件与DSP存储空间
. U# y: o# X, O& _/ p
- u9 N" F* p- Z
3.1 MEMORY和SECTIONS指令
5 ]6 S4 F  m/ D4 i2 `$ j4 J& A4 _- ]+ }6 J8 g) {% S, f& f
3.2 程序与数据“段”
. G  A2 \6 \4 M2 x4 @: j2 j$ y$ A# {1 E; X+ F$ r
4. b  D8 X0 y- s6 ^" _  {% D- x
Bootloader数据流

, a+ @4 O. ^' q( m: r5 ^1 }" }  B1 y) @5 B) L& T$ p
4.1 数据流结构
$ I. b( m  L# A+ _+ V, F
( y! x" }5 n5 I4.2 16-bit数据流
" i" {  U8 T+ d4 U  x1 K7 |. E+ i7 r' B* o9 [
4.3 8-bit数据流. z4 l% t! P; V5 e' v1 B9 M/ _
  ~2 q+ P4 X7 O5 ~, {
53 |. n. D# ^' x) U+ f
FLASH擦写操作 —— FLASH API的使用

6 F+ |$ X& K' o  m! r4 f6 V" e) u1 B% x: I, w. n2 S& b
5.1 FLASH操作的重要特点$ B0 v# `- d) F5 p* e4 |
6 O4 J3 k- X5 i( o
5.2 FLASH API使用步骤
6 i% ^" Q: H" b7 `* c" l+ A
! K0 a& ~3 }+ }; H4 [( W5.3 FLASH API常用函数使用举例3 q+ t: I/ F: J) o
. R4 l' [4 G8 Q
6
/ i) K+ ]3 ~& c" t' k) rBootloader设计过程中的9大关键点

- a1 J, r% I; e+ U3 N4 q  r9 g& H* W, S! F3 y
6.1 Bootloader程序在升级过程中不被擦除的实现方法! f! n- ~) N3 Q, c, u5 @
8 F/ O6 E# Q% k0 P2 e: W. u* j' i
6.2 上电后先进入Bootloader再跳转至main()函数的实现方法& W" X9 J( b1 U' E5 q

' K; M6 u- ^% d% j6.3 Bootloader程序作为CCS应用程序工程一部分的实现方法( M/ P1 O: Z8 g2 D) {4 N% J

* l! O2 y  u5 x8 h, e6.4 Bootloader与上位机形成交互式通信4 R' @) p: T4 I0 h# |& N" p$ w
8 e0 I9 R8 n7 \1 d
6.5 Bootloader程序能够对接收数据校验的实现方法
3 X5 B. `9 @& v# M$ f; w
9 w+ |4 @3 q9 n( e/ q3 ~  z. j' u% ~6.6 在数据出错等情况下能够自动重启的实现方法
; d0 S7 h- F+ l$ t, J& Q) ^
7 C6 v/ l6 B: _* p71 ^& z3 U; ^  C0 y+ C
CCS输出文件格式 —— ASCII-Hex、Intel-Hex与Binary-Hex文件
% S, a$ c) b& w& A# C5 L4 d
" o# ?8 U& F7 ]) q6 v
7.1 CCS配置生成Hex文件的方法8 _' L# v7 ]* Q
% E0 N# M/ B( v/ S# Z# n( x
7.2 ASCII-Hex* {7 k% A! W0 Z5 {& \; d
( X; ~; @% v) Z+ k1 d; j/ d0 G
7.3 Intel-Hex
2 V  K0 c- `0 d) H* _( e  N. @
+ W( y& d* ~: W% Y8 ~& [7.4 Binary-Hex
! X2 l& ?" l+ P4 W' V6 }2 L' W: s! f  L, P3 d# i% T# ~( [

$ p0 k- N- a# @: R8 V' K6 {. \
( o. a, R8 [# p) @% W3 \1 U( B8 x+ O9 E
2 关于c_int00
" X: V# N6 B3 h/ M3 R! _
6 A+ C; m" p7 A' w, E“c_int00在跳转至main()之前都做了些什么”
* z1 g% F6 x1 d* l- @+ M& R" l* R+ g. ?# W7 A
在设计Bootloader时,非常有必要对c_int00函数进行全面了解,因为通常会对它进行改写。
% x1 M0 k: s& x, N9 b+ ?' E
9 N3 o5 i) J( |$ J& |! Ec_int00(也作_c_int00)是C/C++程序初始化代码的入口地址,完成建立C程序的运行环境。它是运行支持库(如rts2800_ml.lib)中的一个重要函数。9 ~5 X0 Y9 h  q+ r% d: d, y

6 X; j* V2 B' ]. hDSP上电时,由Bootloader负责引导至c_ini00,具体引导过程见1。
3 V. N# y  Q9 B! ?' H. H0 z, y& s  ]$ A$ d% W4 A: a
2.1 c_int00完成的工作) V+ S; Y, i) v" L4 p' P. W2 f

& i$ F& v4 c- Q! ~& Q1) 定义系统栈.stack,并初始化栈指针,配置相关寄存器
% P2 [! i$ H/ h3 b; r7 @) U" _! p' F+ @- U" ]! {$ o0 t0 A
2) 初始化全局变量(.cinit)6 i1 |: A# d; e! q2 m6 L

" m) W) x1 b$ j5 f3) 若使用C++,还会完成全局对象构造(.pinit)# Q9 T9 C/ K/ D% L
( z0 l& P! G, i/ X* b2 V
4) 调用main函数运行C程序( x) j+ n5 Q; m4 E! s; R' j) A
/ F7 [$ g: N2 _4 \+ g
5) 当main函数return时,调用exit函数
% V* c) X/ u7 C( ]. ?8 v' h
. K& \9 `3 ]+ }% f- a7 c& g用户可以对c_int00函数进行修改,但修改后的函数必须完成以上任务。
: Y! Q9 \2 O! G5 b) v& |* u( N* K; C! O! v! s$ l5 f8 C& D
2.2 系统初始化1 z3 W6 q$ Q5 m! K% E/ ?5 k3 T6 a
6 w' ^. X% n& e" p7 n2 m4 V4 G
在TI官网找到了rts2800_ml.lib对应的boot.asm源文件,其中核心内容为c_int00函数,其中关于“定义系统栈.stack,并初始化栈指针,配置相关寄存器”等系统初始化的部分如下/ L8 ?. S  j; |- C
3 [- C* N5 t" L/ @9 g6 ~$ u! L8 r
游客,如果您要查看本帖隐藏内容请回复

5 L; q9 w& O: E. z2 Z! }( y: i, l1 k2 a& m
: k" l6 ~. B% o8 s/ U6 D: t8 `

该用户从未签到

3#
发表于 2019-10-8 00:21 | 只看该作者
很详细的介绍,非常感谢!
5 Y2 q; b3 f. G( j. |$ [

该用户从未签到

4#
发表于 2019-10-8 21:58 | 只看该作者
谢谢楼主分享
# ~4 B" _: ~1 C, k0 B6 z
  • TA的每日心情
    难过
    2024-12-8 15:00
  • 签到天数: 157 天

    [LV.7]常住居民III

    5#
    发表于 2020-2-22 14:30 | 只看该作者
    讲解透彻,值得收藏' i. Y1 ^. j6 D: E

    该用户从未签到

    7#
    发表于 2020-4-23 15:14 | 只看该作者
    想看看内容
    . M8 Q. s2 f) t! E: Y: |% X

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-3 03:57 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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