@Rifur,
感謝指正,已修正
文章中提到的四點特徵並不是「創新」,而是「具備」。
-> 有沒有人覺得怪怪的,bl main 到底是跳到記憶體還是 BootRom 中了呢?
我在網路上找到一個答案,不知道對不對?
http://www.aub.org.cn/Embedded_driver/Article113014.html
-> BL是一个相对寻址,在使用BL之前你的PC要先跳到RAM里 例如你把代码(这些代码包括了BL main)都拷到 0xc0000000开始的地方,那么你需要 ldr pc,=0xc0000000 ,而因为在0xc0000000 后面也有个 BL main , 所以,PC执行到那里自动会BL到 RAM里面的 main ,而不会到flash里的main
由 John Linq 發表於 February 6, 2009 05:16 PM恰好看到以下這個open source scheduler:
'LightingBolt' - an open source scheduler for a STR9 is released
http://www.keil.com/forum/docs/thread14276.asp
* A very fast context switch, measured in [microseconds] at 48[MHz] (STR9 can run at up to 96[MHz]).
* A rewritten synchronization module. Semaphores are now truly task-safe and contain the correct logic. A new synchronization primitive (event) introduced. All synchronization elements are linked statically, and there is no need to allocate/release them, or for this matter neither any other system resource, like timers. User does not need direct access to basic system data types to use the kernel. This enhances robustness.
* The system's priority queue has been completely rewritten. It is now logarithmically correct.
* The program has been generally retrofitted to run efficiently on an ARM core.
* Strict screening by PC-lint.
* Stack level checking.
* Open source installer (NSIS) used to create a self extractor for the delivery of the source code.
* Modularity.
* Documentation.
正在考量是否可能將這個CuRT移植到NXP的LPC2378 Microcontroller上,
但是,因為技術能力薄弱,所以,只能夠先一陣亂搞,看看情況如何。
一陣亂搞之後發現:
在\CuRT_v1\includes\kernel\kernel.h中
#define TASK_STACK_SIZE 8192
#define THREAD_STACK_SIZE 8192
這兩個數值太大了,導致最少也需要
RW-data=96 + ZI-data=231904 == 232,000 Bytes RAM
可是LPC2378只有32K不到的RAM........