5526|6

492

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

自己写的HELP s3c2416 uCOS II 的移植程序 [复制链接]

#include "all.h"


OS_STK  InitTaskStk[1024];
OS_STK  MyTaskStk1[1024];
OS_STK  MyTaskStk2[1024];


static void MyTask1(void *parg)
{
        
        Uart_Printf("MyTaskStart\n");
        
        while (1) {
                OSTimeDly(100);
                Uart_Printf("A\n");
        }        
}

static void MyTask2(void *parg)
{

        while (1) {
                Uart_Printf("B\n");
                OSTimeDly(68);
        }        
        
}


extern void print_cpuinfo(void);

void InitTask(void *parg)
{
                parg = parg ;
                Uart_Printf("Init\n");
                //初始化代码段
                Uart_0_Init();
                timer_0_init();
                print_cpuinfo();                        //打印CPU信息
        
                //任务创建
                OSTaskCreate(MyTask1, (void *)1, (void *)&MyTaskStk1[1023], 4);
                OSTaskCreate(MyTask2, (void *)2, (void *)&MyTaskStk2[1023], 8);
                OSTaskDel(OSPrioCur);
               
}



void InitTaskStart(void)
{
        OSTaskCreate(InitTask, (void *)0, (void *)&InitTaskStk[1023], 1);  //创建优先级为0的任务
        
}


#include "all.h"
#include
#include
#include
#include
#include


void Uart_Printf(char *fmt,...)
{
        va_list ap;
        char string[1024];

        va_start(ap,fmt);
        vsprintf(string,fmt,ap);
        va_end(ap);

        Uart_0_SendString(string); //default send from uart0

}



void Uart_0_Init(void)
{
        /*init GPIO*/
        GPHCON &= ~(0xf);
        GPHCON |= 0xa;
        
        /*uart registers*/
        ULCON0_REG = 0x3;
        UFCON0_REG = (0xa << 4) | 0x7;
        UMCON0_REG = 0;
        UBRDIV0_REG = 35;
        UDIVSLOT0_REG = 0x0888;
        UCON0_REG = 0x5|(0x1 << 7)|(0x2 << 10);
}



void Uart_0_SendByte(char b)
{
        while (!(UTRSTAT0_REG & 0x2));
        UTXH0_REG = b;
}


void Uart_0_SendString(char *s)
{
        char *tmp = s;
        while (*tmp) {
                if ('\n' == (char)*tmp) {
                        Uart_0_SendByte('\r');
                }
                Uart_0_SendByte(*tmp);
                ++tmp;
        }
}


char Uart_0_ReceiveByte(void)
{
        return URXH0_REG;
}


//Uart的中断接受程序没有写,用户自己添加

#include "all.h"

extern void inerrupt_vector_init(void);
extern void exception_vector(void);
extern void MMU_EnableDCache(void);
extern void MMU_EnableICache(void);
extern void MMU_DisableMMU(void);
extern void read_cpsr(void);
extern void InitTaskStart(void);
extern void make_mmu_table (void);


void Main()
{
        Uart_Printf("        ccStart\n");
        
        inerrupt_vector_init();
        s3c2416_memcpy((void *)0xffff0000, (void *)(exception_vector), 128);

        MMU_EnableDCache();
        MMU_EnableICache();        
        
        Uart_Printf("Start\n");
        
        
        OSInit();
        InitTaskStart();
        
        OSStart();  

}


#include


extern INT32U get_PCLK(void);

static void timer_0_ISRService(void)
{
        SRCPND_REG |= (0x01<<10);                        /* write 1 to clear */
        INTPND_REG |= (0x01<<10);                        /* write 1 to clear */
        OSTimeTick();
}

static void timer_0_ISRInit(void)
{
        INTMOD_REG = 0x00000000;
        PRIORITY_MODE_REG = 0x00000000;
        INTMSK_REG &= ~(0x01<<10);                /* set timer0 interrupt available */
}

/*
*Tclk = PCLK/{precaler+1}/{divider value}
*precaler = PCLK/{Tclk*{divider value}} - 1
*/
void timer_0_init(void)
{
        TCON_REG  &= ~0x0F;                /* default timer0*/
        TCFG0_REG &= ~0xFF;               
        TCFG1_REG &= ~0x0F;

        timer_0_ISRInit();

        register_irq(10, timer_0_ISRService);
        
        TCFG0_REG |= 15;                        /* prescaler: 15 */
        TCFG1_REG |= 0x01;                /* divider value :1/4*/
        TCNTB0_REG = get_PCLK()/(15*4*OS_TICKS_PER_SEC) - 1;

        TCON_REG |= 0x02;                        /* update TCNTB0&TCMPB0 */
        TCON_REG &= ~0x02;                        /* must clear 'manual update', note page 297*/
        TCON_REG |= 0x09;                        /* 1001-- auto reload, start timer0 */
}
HELPS3C2416 uCOSII移植.zip (1016.64 KB, 下载次数: 20, 售价: 1 分芯积分)

最新回复

这个是基于我们HELPER2416的第一版,内存是128MB的mddr版本,其它的大同小异,是我们的用户移值的。   详情 回复 发表于 2014-8-19 20:56
点赞 关注

回复
举报

554

帖子

0

TA的资源

版主

沙发
 
这个要顶,我虽然没有时间偿试,但分享精神值得大家学习!希望有时间的偿试一下,当然,rawos也是很优秀的,我们有官方支持:www.raw-os.org,有兴趣的可以研究一下

点评

老大这个是你们的板子吧 2013年上传的,我测试过,还可以 http://download.csdn.net/download/u010311769/5552341  详情 回复 发表于 2014-8-19 17:52
 
个人签名My dreams will go on...
http://www.jyxtec.com
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我能说我购买了一直下载失败吗?!

点评

不会吧。我使用的时候没有问题啊  详情 回复 发表于 2014-7-16 11:18
 
 
 

回复

492

帖子

0

TA的资源

一粒金砂(高级)

4
 
yuer_52 发表于 2014-7-16 11:17
我能说我购买了一直下载失败吗?!

不会吧。我使用的时候没有问题啊
 
 
 

回复

109

帖子

0

TA的资源

一粒金砂(中级)

5
 
牛逼哄哄的,赞
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
spacexplorer 发表于 2014-7-13 15:28
这个要顶,我虽然没有时间偿试,但分享精神值得大家学习!希望有时间的偿试一下,当然,rawos也是很优秀的 ...

老大这个是你们的板子吧  2013年上传的,我测试过,还可以
http://download.csdn.net/download/u010311769/5552341

点评

这个是基于我们HELPER2416的第一版,内存是128MB的mddr版本,其它的大同小异,是我们的用户移值的。  详情 回复 发表于 2014-8-19 20:56
 
个人签名电工
 
 

回复

554

帖子

0

TA的资源

版主

7
 
lyzhangxiang 发表于 2014-8-19 17:52
老大这个是你们的板子吧  2013年上传的,我测试过,还可以
http://download.csdn.net/download/u0103117 ...

这个是基于我们HELPER2416的第一版,内存是128MB的mddr版本,其它的大同小异,是我们的用户移值的。
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表