UCOS_II的移植到S3C2440 ADS 1.2

2020-07-01来源: eefocus关键字:UCOS_II  移植到  S3C2440  ADS  1  2

一、新建工程

1.新建一个ARM Executable Image

2.创建uCOS_II文件夹,创建两个子文件夹,分别为ARM、SOURCE

ARM存放和平台相关的文件("OS_CPU.H" "Os_cpu_a.s" "Os_cpu_c.c" )

SOURCE下存入和平台无关的文件("ucos_ii.h" "os_cfg.h" "os_core.c" "os_flag.c" "os_mbox.c" "os_mem.c" "os_mutex.c" "os_q.c" "os_sem.c" "os_task.c" "os_time.c" "os_tmr.c" )

3.创建一个S3C2440文件夹,创建两个子文件夹,分别为INC、SRC

INC存放S3C2440相关头文件("2440addr.h" "2440lib.h" "2440slib.h" "config.h" "Def1.h" "lcd.h" "mmu.h" "Option.h" "Target.h" "Timer.h" )

SRC存放S3C2440相关源文件("Timer.c" "2440init.s" "2440lib.c" "2440slib.s" "Font_Libs.c" "iphone.c" "lcd.c" "mmu.c" "nand.c" "Target.c" )

4.创建一个app文件夹(app_cfg.h、main.c、Printf.c、Printf.h)


二、工程设置Edit->DebugRel Settings下

1.Target->Target Settings,Post-linker:ARM fromELF

2.Target->Access Paths选中Always Search User Paths(ucos_ii部分文件采用#include <>包涵,不修改这里找不到文件)

3.Language Settings下ARM Assembler、ARM C Compliler、ARM C++ Complier处理器设置成ARM920T

4.Language Settings下ARM C Compliler下Errors下去掉Implicit pointer c,ARM C Compliler下Warnings下去掉Unused declaration(-O1 -g+ -cpu ARM920T -Wx -Ec)

5.ARM Linker下,Output下RO Base设置成0x30000000,Options下Image entry point设置成0x30000000,Layout下Place at beginning of image下的Object/Symbol设置成2440init.o,Section设置成Init,Listings下选勾Image map、List file设置list.txt,勾上Sizes、Totals、Unused、Veneers

6.ARM fromELF下Output file name下填写输出的二进制


三、移植文件的修改


对OS_CPU.H的修改:


view plaincopy to clipboard

/*   

*********************************************************************************************************  

*                                              ARM  

*  

* Method #1:  NOT IMPLEMENTED  

*             Disable/Enable interrupts using simple instructions.  After critical section, interrupts  

*             will be enabled even if they were disabled before entering the critical section.  

*               

* Method #2:  NOT IMPLEMENTED  

*             Disable/Enable interrupts by preserving the state of interrupts.  In other words, if   

*             interrupts were disabled before entering the critical section, they will be disabled when  

*             leaving the critical section.  

*             NOT IMPLEMENTED  

*  

* Method #3:  Disable/Enable interrupts by preserving the state of interrupts.  Generally speaking you  

*             would store the state of the interrupt disable flag in the local variable 'cpu_sr' and then  

*             disable interrupts.  'cpu_sr' is allocated in all of uC/OS-II's functions that need to   

*             disable interrupts.  You would restore the interrupt disable state by copying back 'cpu_sr'  

*             into the CPU's status register.  This is the prefered method to disable interrupts.  

*********************************************************************************************************  

*/  

  

#define  OS_CRITICAL_METHOD    3  

  

#if      OS_CRITICAL_METHOD == 3  

#define  OS_ENTER_CRITICAL()  (cpu_sr = OSCPUSaveSR())  /* Disable interrupts                        */  

#define  OS_EXIT_CRITICAL()   (OSCPURestoreSR(cpu_sr))  /* Restore  interrupts                       */  

#endif  

  

/*  

*********************************************************************************************************  

*                                         ARM Miscellaneous  

*********************************************************************************************************  

*/  

  

#define  OS_STK_GROWTH        1                       /* Stack grows from HIGH to LOW memory on ARM    */  

  

#define  OS_TASK_SW()         OSCtxSw()  


对Os_cpu_c.c的修改:


view plaincopy to clipboard

/*  

*********************************************************************************************************  

*                                               uC/OS-II  

*                                        The Real-Time Kernel  

*  

*                           (c) Copyright 1992-2003, Micrium, Inc., Weston, FL  

*                                          All Rights Reserved  

*  

*                                               ARM9 Port  

*  

* File : OS_CPU_C.C  

*********************************************************************************************************  

*/  

  

//#define  OS_CPU_GLOBALS  

#include "ucos_ii.h"  

  

  

/*  

*********************************************************************************************************  

*                                        INITIALIZE A TASK'S STACK  

*  

* Description: This function is called by either OSTaskCreate() or OSTaskCreateExt() to initialize the  

*              stack frame of the task being created.  This function is highly processor specific.  

*  

* Arguments  : task          is a pointer to the task code  

*  

*              p_arg         is a pointer to a user supplied data area that will be passed to the task  

*                            when the task first executes.  

*  

*              ptos          is a pointer to the top of stack.  It is assumed that 'ptos' points to  

*                            a 'free' entry on the task stack.  If OS_STK_GROWTH is set to 1 then   

*                            'ptos' will contain the HIGHEST valid address of the stack.  Similarly, if  

*                            OS_STK_GROWTH is set to 0, the 'ptos' will contains the LOWEST valid address  

*                            of the stack.  

*  

*              opt           specifies options that can be used to alter the behavior of OSTaskStkInit().  

*                            (see uCOS_II.H for OS_TASK_OPT_???).  

*  

* Returns    : Always returns the location of the new top-of-stack' once the processor registers have  

*              been placed on the stack in the proper order.  

*  

* Note(s)    : 1) Interrupts are enabled when your task starts executing.   

*              2) All tasks run in SVC mode.  

*********************************************************************************************************  

*/  

  

OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)  

{  

    OS_STK *stk;  

  

optop

[1] [2] [3] [4] [5] [6] [7]
关键字:UCOS_II  移植到  S3C2440  ADS  1  2 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501780.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:采用JLink+ADS1.2调试uboot的方法
下一篇:将TQ2440的ADS工程文件移植到KEIL5中

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机ucos ii任务切换汇编代码分析(1)
ucos中任务切换函数都是汇编写的,属于“需移植”文件,这个汇编文件名一般叫做:OS_CPU_A.ASM要想看懂任务切换的原理,首先遇到的第一个难点,就是OS_CPU_A.ASM这个汇编文件里的一大堆不常见的汇编伪指令,搞懂这些指令是搞懂程序原理的第一步。这篇文章先只分析这些汇编指令。这个文件为ucos操作系统提供了4个API函数,分别是: PUBLIC OSStartHighRdy;函数功能:切换到已就绪的任务横纵优先级最高的那个任务中去PUBLIC OSCtxSw ;函数功能:一般的上下文切换,ContextSwitch,上下文切换又叫任务切换PUBLIC OSIntCtxSw ;函数功能:在中断中进行上下文切换PUBLIC
发表于 2020-04-29
ucos-ii和ucgui在stm32上的移植及工程
_Warn (const char *s)  { GUI_USE_PARA(s); }void  GUI_X_ErrorOut(const char *s)  { GUI_USE_PARA(s); }   在源文件夹的Sample/GUI_X下GUI_X_uCOS.c文件中,只修改以下内容:static  void  CheckInit (void) {if (KeyIsInited 
发表于 2020-04-07
uCOS-II在MSP430上的移植1——准备工作
学习uC/OS-II有一段时间了,下了上百兆的资料。网上可以找到很多移植好的工程,参考别人的,稍微修改下,编译调试通过了,用起来始终觉得不是很踏实,毕竟不知道别人修改了哪些地方。静心整理了下思路,决定自己动手,从最原始的文件修改,把uCOS-II移植到MSP430F169上。一、准备工作(1)μC/OS-II中文教程.CHM——《嵌入式实时操作系统uC/OS-II(第2版)邵贝贝译》一书的电子版。也可在网上查找相关的电子文档。作为工具手册,在移植过程中碰到不理解的可以随时查看.(2)μC/OS-II操作系统的源代码,版本为V2.86。官方下载地址:http://www.micrium.com/products/rtos/ucos
发表于 2020-03-05
【stm32+uC/OS-IIucosii移植简单详细步骤
μC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)。同时,该系统源代码开放、整洁、一致,注释详尽,适合系统开发。 μC/OS-II已经通过联邦航空局(FAA)商用航行器认证,符合航空无线电技术委员会(RTCA)DO-178B标准。——摘自百度百科经过三天对uC/OS-II的研究和琢磨,成功移植了自己的uC/OS-II;回首看下,简单的移植是非常简单的;可能这句话比较啰嗦,等我下面解析完之后就认同了;首先,来附图,我相信只要刚刚认识ucosii的人,都见过这种类型的图了;而且版本不一;这个是摘自
发表于 2020-03-04
【stm32+uC/<font color='red'>OS</font>-<font color='red'>II</font>】<font color='red'>ucos</font>ii移植简单详细步骤
AVR128单片机最小系统串口,外部中断,跑马灯,uCOS-II移植
实验名称:串口通信实验功能描述:计算机通过串口向开发板发送数据,开发板将数据原样送回。实验目的:学习串口通信实验说明:MCU--M128          内部8M晶振      连接方式:利用串口线将开发板和计算机相连。单片机源程序如下:/************************************************文件:sio.c用途:结构化串口通信程序************************************************/#include "config.h"#if
发表于 2019-10-25
S3C2440 DM9000C网卡移植(二十六)
上一节 我们学习了:网卡驱动介绍以及制作虚拟网卡驱动:https://blog.csdn.net/xiaodingqq/article/details/81501393接下来本节,学习网卡芯片DM9000C,如何编写移植DM9000C网卡驱动程序。1、首先来看看DM9000C原理图如下图所示:(#表示低电平有效)SD0~15:16位数据线,有CMD引脚决定访问类型CMD:命令线,当CMD为高电平,表示SD传输的是数据,当CMD为低电平,表示SD传输的是地址INT:中断引脚,接在2440的GPF7引脚上IOR#:读引脚,接在2440的nOE上IOW#:写引脚,接在2440的nWE上CS#:片选引脚,放在2440的bank4的片选上
发表于 2020-07-09
S3C2440 DM9000C网卡<font color='red'>移植</font>(二十六)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved