|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
DSP/BIOS操作系统启动过程
! T+ ~: R+ w$ n2 Y1 |/ H7 p Q
, a( [2 L4 Y ^6 ?5 _" X( j7 V6 g% k; ^
& l: o, v- a. x4 \2 S* |" Y. s其实在上一篇中已经讲过DSP/BIOS的启动过程,这里不妨再唠叨一下:# R4 v% Y; b9 o
! d0 L( T9 O: C
7 J" Y- O% e0 K! J) }( e
- 系统上电复位,从Flash装载完程序后,首先从C/C++环境入口_c_int00开始执行
- 利用.cinit记录初始化.bss段
- 调用BIOS_init初始化用到的各个模块
- 处理.pinit表,如C++中的全局对象的构造函数就在这个时候执行
- 进入main函数执行
- main函数返回,调用BIOS_start启动DSP/BIOS操作系统
2 _4 T! T3 D+ ]
% b/ S9 Z$ `3 ^ \# u2 k) r1 k, \
9 b7 W: X8 b: @1 \/ g% X7 M$ L9 `* B; R- L5 L
其实除了其中第1步对我们烧写Flash有指导意义外,其它各步骤都是无关紧要的(当然,仅就这里讨论的问题而言)。基于此,这里烧写Flash的思路就是:在系统复位后,程序跳转到_c_init00之前,写一段从Flash拷贝应用程序到内存的代码就好了!
' D" a6 K+ C% ~8 i' o
7 P/ S& |3 B0 R5 h3 n0 D迁移到操作系统的Flash烧写& v" ], y. ~0 X5 O+ R
4 l8 c$ _% p* H; n' @
" r. Y# }8 h7 y, a6 T7 `* m4 |
在之前“TMS320C6713烧写Flash的通用方法”一文中,已经详述了如何烧写裸机的代码,这里只需要对DSP/BIOS工程做很少的改动,就可无缝的将之前的烧写方法用在这里,下面还是按步骤来,主要描述一些不同的地方(这样清晰些):* h1 O- j" z* c. S$ M
8 _) i4 l" p4 T8 ?1 ]( s0 S; X7 s/ w4 d- J# D" g
5 ^7 _" p, J0 A
% l x! n1 y" u* v; m1 i! g8 M |
|