积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> UC/OS
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 |
uCOS-II在S3C2440上的移植
 
作者:研一   来源:中嵌网    点击数:123   更新时间:2008-10-13
您可以添加到网摘 让更多人关注此文章:

    

1)    下载源代码

下载最新的uCOS-II-V286版和Michael Anburaj基于S3C24101.6.1移植版。根据代码用途的,建立apps3c2440ucosii三个目录,分别放置应用程序,平台移植文件和uCOS的源代码。如图:

 

2)    新建ADS工程

加入所有代码,修改ARM AssemblerC Compiler的编译器类型为ARM920T。为方便调试,编译完的二进制文件由U-BOOT下载到0x31000000的内存地址,所以修改链接参数的代码地址RO Base0x31000000。如图:

 

3)    修改时钟频率和总线速率

这一部主要是修改CLKDIVN时钟分频比和MPLL总线速率,可在init.S的初始化汇编环境中设置,

        ldr     r0,=CLKDIVN     ; Set ratios 1:3:6 for FCLK:HCLK:PCLK

        ldr     r1,=(7)

        str     r1,[r0]

        [ PLL_ON_START

            ; Configure MPLL

            ldr    r0,=MPLLCON         

            ldr    r1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)  ; Fin=12MHz,Fout=50MHz

            str    r1,[r0]

        ]

也可在C的入口函数C_vMain中设置

        __vChangeClockDivider(3,1);            // 1:3:6       /* already set at init.S */

        __vChangeMPllValue(184,2,2);            // FCLK=406M

 

4)    修改内核心跳

Michael Anburaj的移植是使用看门狗作内核心跳,但在S3C2440中,看门狗与AC97控制器共用一个中断,所以需要修改中断跳转和清中断等操作。考虑到看门狗在嵌入式的重要性,这里改用没有输出功能的时钟4作为内核心跳。修改心跳初始化函数FRMWRK_vStartTicker():

void FRMWRK_vStartTicker(U32 wTicksPerSec)

{

              ……

        OS_ENTER_CRITICAL();

 

              pISR_TIMER4 = (U32)__vTimer4Interrupt;

 

        tcfg1 &= ~S3C2410_TCFG1_MUX4_MASK;

        tcfg1 |= S3C2410_TCFG1_MUX4_DIV2;

 

        tcfg0 &= ~S3C2410_TCFG_PRESCALER1_MASK;

        tcfg0 |= ((6 - 1) / 2) << S3C2410_TCFG_PRESCALER1_SHIFT;

 

        tcnt = (PCLK / 6) / wTicksPerSec;

……

        tcon &= ~(7<<20);

        tcon |= S3C2410_TCON_T4RELOAD;

        tcon |= S3C2410_TCON_T4MANUALUPD;

        rTCON = tcon;

        rTCNTB4 = tcnt;

 

        tcon |= S3C2410_TCON_T4START;

        tcon &= ~S3C2410_TCON_T4MANUALUPD;

        rTCON = tcon;

   

        BIT_CLR(rINTMSK, BIT_TIMER4);

        OS_EXIT_CRITICAL();

}

 

5)    修改U-BOOT的中断跳转

利用U-BOOT已有的丰富功能,如烧写,网络,脚本等,可在没有仿真器的情况下大大减少调试的时间。

如果直接下载ucos,一挑战到0x31000000的内存地址,会出现如下的中断信息:

interrupt request

pc : [<3100ab28>]    lr : []

sp : 7fbfdfb7  ip : ffffdd7e  fp : 33d78a49

r10: 33d78931  r9 : 51000000  r8 : 80000013

r7 : 00000200  r6 : 00000000  r5 : 00500000  r4 : 0000dc7e

r3 : fefefeff  r2 : 00000000  r1 : ffffbfff  r0 : 80000013

Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32

Resetting CPU ...

原因是U-BOOT的初始化代码接管了中断管理,看U-BOOT的反汇编:

.globl _start

_start: b       start_code

33f80000:       ea000014        b       33f80058

        ldr     pc, _undefined_instruction

33f80004:       e59ff014        ldr     pc, [pc, #20]   ; 33f80020 <_undefined_instruction>

        ldr     pc, _software_interrupt

33f80008:       e59ff014        ldr     pc, [pc, #20]   ; 33f80024 <_software_interrupt>

…….

        ldr     pc, _irq

33f80018:       e59ff014        ldr     pc, [pc, #20]   ; 33f80034 <_irq>

…….

33f80020 <_undefined_instruction>:

33f80020:       33f80240        mvnccs  r0, #4  ; 0x4

33f80024 <_software_interrupt>:

33f80024:       33f802a0        mvnccs  r0, #10 ; 0xa

…….

33f80034 <_irq>:

33f80034:       33f80420        mvnccs  r0, #536870912  ; 0x20000000

IRQ的中断入口为偏移0x3433f80420OK,在C_vMain入口处加一句:

(*(unsigned *)(0x34)) =  (U32)UCOS_IRQHandler;

 

6)    系统测试

添加一个应用程序ex3.c,建立两个子任务,分别不停的打印01。主任务每隔1秒打印系统的使用率。运行情况如下:

UCOS_FRAMEWORK Ver 1.15 for S3C2440 (ARM920T from Samsung) :05/03/05

Built using ADS on Apr 26 2008 <10:31:35>

Endian: LITTLE

Processor operating state: ARM

Task start state: ARM

CONSOL: COM0, 115200bps, 8Bit, NP

CPU Clk: 406MHz   MMU: ON   Cache: ON   Write Buf: ON

FLASH_SADDR:00000000h SRAM_SADDR:40000000h SRAM_EADDR:40000fffh

SDRAM_SADDR:30000000h SFR_BADDR :48000000h ISR_BADDR :33ffff00h

Free RAM: 3100edd8h ~ 33ffa7ffh

Developed by Michael Anburaj, http://geocities.com/michaelanburaj/

 

Ported by WEIYAN TECHNOLOGY, http://www.gzweiyan.com/

Ver 0.1 08/04/26

 

timer tcon=00500000, tcnt dc7e, tcfg 00000200,00000000

uC/OS-II, The Real-Time Kernel ARM Ported version

Jean J. Labrosse/ (Ported by) Michael Anburaj

WEIYAN TECHNOLOGY http://www.gzweiyan.com

Task1 #1

<-PRESS ''ESC'' TO QUIT->

 5 0 5     //正在运行的的任务数         当前的cpu使用率              每秒任务切换的次数

01010101010101010101010101010101010101010101010101010101010101010101010101010101 5 1 141

01010101010101010101010101010101010101010101010101010101010101010101010101010101 5 1 141

01010101010101010101010101010101010101010101010101010101010101010101010101010101 5 1 141

01010101010101010101010101010101010101010101010101010101010101010101010101010101 5 1 141

 

7)    移植小结

这次移植的难点在U-BOOT的中断接管,修改完内核心跳后,内核一运行就自动重启。后来细看输出信息interrupt request才发现这不是ucos输出的,IRQ中断仍由U-BOOT管理。找到问题的原因,解决方法就好办了。可以直接在U-BOOT里通过mw来修改,也可以由ucos来修改。

 

如果各位朋友在移植过程中遇到什么问题,可联系我们免费索取该移植包。

 

伟研科技 专注于Linux系统移植及应用开发 http://www.gzweiyan.com



相关文章
· 基于S3C2440微处理器的工业超声探伤仪设计[570]
· 基于嵌入式Linux环境下MiniGUI的研究与移植[349]
· μC/OS-Ⅱ在ARM7上移植方法的探讨与实现[135]
· μC/OS-Ⅱ在ARM7上移植方法的探讨与实现[335]
· μC/OS-II在C8051F上的移植[172]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
避免危及半导体业 德出手挽
HP实验室展示集CMOS电路与忆阻器
全球第二大代工巨头伟创力瘦身应对金融
Vishay Silico
奥地利微电子发布全球首款具有嵌入式比
采用 4mm x
未来MEMS产业恐缩水 车
iSuppli发布08年半导体厂商初
飞兆半导体指控英飞凌专利侵权
全球三大晶圆代工巨头齐遇冷 
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
[原创]户用电热式热能量表的合...
嵌入式十三法则...
基于CPLD和单片机的任意波形...
电子行业的发展方向...
单片机-超低价专业PCB打样...
超低价专业PCB打样 双面板...
[原创]主题:移动开发平台的建...
[原创]正弦脉宽调制(SPWM...
[推荐]Agilent8590...
[推荐]HP8591E HP8...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网