|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
DSP/BIOS操作系统启动过程
. t5 j) K) T- _1 A
# w$ T1 `+ F* x1 l$ D) }" \9 e/ J% { Q
其实在上一篇中已经讲过DSP/BIOS的启动过程,这里不妨再唠叨一下:
; a0 P" A* Q! N: a+ M) g' C2 G$ Z3 A7 V' U, L" v
' f& u4 e+ J8 ~9 C+ B+ p
- 系统上电复位,从Flash装载完程序后,首先从C/C++环境入口_c_int00开始执行
- 利用.cinit记录初始化.bss段
- 调用BIOS_init初始化用到的各个模块
- 处理.pinit表,如C++中的全局对象的构造函数就在这个时候执行
- 进入main函数执行
- main函数返回,调用BIOS_start启动DSP/BIOS操作系统
5 g1 q; z, q7 }
, r9 r4 `2 f6 v( _5 }6 H1 |: Z/ R" a' V+ x$ z+ m7 g
) J! `# [$ X! F: O其实除了其中第1步对我们烧写Flash有指导意义外,其它各步骤都是无关紧要的(当然,仅就这里讨论的问题而言)。基于此,这里烧写Flash的思路就是:在系统复位后,程序跳转到_c_init00之前,写一段从Flash拷贝应用程序到内存的代码就好了!
' j- s) _8 S$ Q5 X% u' u! Y
2 v- @6 c3 G. m' x迁移到操作系统的Flash烧写
! e" J+ f" \, ^7 q
0 Q* E; {4 M2 ~: T+ E. z, E5 ^0 n* f
在之前“TMS320C6713烧写Flash的通用方法”一文中,已经详述了如何烧写裸机的代码,这里只需要对DSP/BIOS工程做很少的改动,就可无缝的将之前的烧写方法用在这里,下面还是按步骤来,主要描述一些不同的地方(这样清晰些):# _! N! u3 v5 B$ u" `
3 V! D3 ]; {9 m5 n" D* L/ b
" |% h& ]# Z, @4 n. f/ g1 x9 C
" t x0 u" O5 H. {; r5 g' N! {. _
& W% U: }$ ~' D0 Q" R4 [: Q3 D |
|