移植uCOSII体会(二)
今天得到了dr2001,maxwell_lee metalmax 两位朋友的指点,在此再次表示对他们的感谢!今天在论坛中看到了“ uc/os为什么不可以在任意地址运行?”这样一个帖子,在此我谈谈我的一些看法
1.正如“dr2001”在给我的回复中提到的“ARMv5开始内核是哈佛的,对外总线地址空间就是统一的,不像51分了各种地址空间”我认为LPC的启动一定是从
Ox0000 0000开始的,但是单一的地址肯定过于简单,因为我们的系统往往有很多不同的存储器件。所以就有了memory re-mapping。重定向用的很多。在
LPC23XX就有专门的寄存器来进行控制,而且LPC23XX启动的时候就吧0x0000 0000重定向到了一个自己的初始化程序,主要用来做ISP等一系列的下载,而且
其中的一下函数还可以进行调用,实现程序运行期间对Flash的读写操作。这点很像我用过的sst的单片机。我想对于arm7的体系结构来说,中断地址,程序
开始地址等都是定死的,但是可以通过scat文件对存储位置的安排,重定向,相应的跳转指令来实习代码在任意位置启动。
2.写了一个用一个信号量两个任务来控制两个led灯一个先亮灭掉后在亮下一个的程序,也就是两个led的跑马灯。虽然可以实现但是总觉得不太好。希望大家
指点一下
staticvoidAppTaskLed (void *p_arg)
{
CPU_INT08U key=1;
CPU_INT08U*msg;
CPU_INT08U err;
CPU_INT32U nstate=0;
p_arg=p_arg;
led_on(1);
led_off(2);
OSTimeDlyHMSM(0, 0, 1, 0);
OSMboxPost(AppUserIFMbox, (void *)key);
OSTimeDlyHMSM(0, 0, 0, 1);
while(1)
{
msg = (CPU_INT08U *)(OSMboxPend(AppUserIFMbox, 0, &err));
nstate= (CPU_INT32U)msg;
if (err == OS_NO_ERR)
{
nstate = (CPU_INT32U)msg;
if(nstate==2)
{
lde_on(1);
lde_off(2);
OSTimeDlyHMSM(0, 0, 1, 0);
OSMboxPost(AppUserIFMbox, (void *)key);
OSTimeDlyHMSM(0, 0, 0, 1);
}
}
}
}
staticvoidAppTaskLed2 (void *p_arg)
{
CPU_INT08U*msg;
CPU_INT08U err;
CPU_INT32U nstate=0;
CPU_INT08U key=2;
p_arg=p_arg;
while(1)
{
msg = (CPU_INT08U *)(OSMboxPend(AppUserIFMbox, 0, &err));
if (err == OS_NO_ERR)
{
nstate = (CPU_INT32U)msg;
if(nstate==1)
{
led_on(2);
led_off(1);
OSTimeDlyHMSM(0, 0, 1, 0);
OSMboxPost(AppUserIFMbox, (void *)key);
OSTimeDlyHMSM(0, 0, 0, 1);
}
}
}
}
信号量多用于任务间同步,和互斥.
邮箱用于大数据的传送.
队列多用于处理有序的事件.
信号量就是中央Z.F.发给官人做一方大员的官印,有很多种官印但是不能一印多发,得到官印者才能掌权鱼肉一方百姓(任务得到信号量才能运行),否则你就只要等官跑官。
邮箱,就好给比当差的下达的抄家、拆房、收监等红头文件,拿到啥样的文件就干啥。
消息队列,就是给任务发了一连串的邮件,官员(任务)拿到这一大摞文件,可以从底部或者顶部(LIFO or FIFO)一个一个拆开处理。 ddddddddd 1楼正解 做个记号~~~~~~~~ 来看抄家的 1楼说话很河蟹
顶了,又长知识又解气!! mark 回复【1楼】lulidpj
信号量多用于任务间同步,和互斥.
邮箱用于大数据的传送.
队列多用于处理有序的事件.
信号量就是中央Z.F.发给官人做一方大员的官印,有很多种官印但是不能一印多发,得到官印者才能掌权鱼肉一方百姓(任务得到信号量才能运行),否则你就只要等官跑官。
邮箱,就好给比当差的下达的抄家、拆房、收监等红头文件,拿到啥样的文件就干啥。
消息队列,就是给任务发了一连串的邮件,官员(任务)拿到这一大摞文件,可以从底部或者顶部(LIFO or FIFO)一个一个拆开处理。
-----------------------------------------------------------------------
说的很好! mark 马克思 学习了。 mark!! 又受教了 我是顶一楼的解释的,一语中的,讲的非常好 mark MARK先。学习学习 回复【楼主位】chenguozi
-----------------------------------------------------------------------
我喜欢这种风格,易懂,风趣
页:
[1]