历史上的今天
今天是:2025年04月07日(星期一)
2020年04月07日 | ucos-ii和ucgui在stm32上的移植及工程
2020-04-07 来源:eefocus
uc/os-ii移植笔记
(此部分参考了tomato的介绍)
os_cpu.h
与编译器相关的数据类型
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
typedef signed char INT8S; /* Signed 8 bit quantity */
typedef unsigned short INT16U; /* Unsigned 16 bit quantity */
typedef signed short INT16S; /* Signed 16 bit quantity */
typedef unsigned int INT32U; /* Unsigned 32 bit quantity */
typedef signed int INT32S; /* Signed 32 bit quantity */
typedef float FP32; /* Single precision floating point*/
typedef double FP64; /* Double precision floating point */
typedef unsigned int OS_STK; /* 堆栈类型为32位 Each stack entry is 32-bit wide */
typedef unsigned int OS_CPU_SR; /* Define size of CPU status register (PSR = 32 bits) */
与ARM 处理器相关的代码
#define OS_CRITICAL_METHOD 3 //进入临界段的方法
#if OS_CRITICAL_METHOD == 3
#define OS_ENTER_CRITICAL() {cpu_sr = OS_CPU_SR_Save();} //关中断
#define OS_EXIT_CRITICAL() {OS_CPU_SR_Restore(cpu_sr);} //开中断
#endif
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR OS_CPU_SR_Save(void);
void OS_CPU_SR_Restore(OS_CPU_SR cpu_sr);
#endif
void OSCtxSw(void);
void OSIntCtxSw(void);
void OSStartHighRdy(void);
设置堆栈的增长方向
#define OS_STK_GROWTH 1 /*堆栈由高地址向低地址增长*/
OS_CPU_C.C
用C 语言编写六个操作系统相关的函数
OS_STK *OSTaskStkInit ( void (*task)(void *p_arg),
void *p_arg,
OS_STK *ptos,
INT16U opt)
{
OS_STK *stk;
(void)opt; /* 'opt' is not used, prevent warning */
stk = ptos; /* Load stack pointer */
/* Registers stacked as if auto-saved on exception */
*(stk) = (INT32U)0x01000000L; /* xPSR */
*(--stk) = (INT32U)task; /* Entry Point */
*(--stk) = (INT32U)0xFFFFFFFEL; /* R14 (LR) (init value will cause fault if ever used)*/
*(--stk) = (INT32U)0x12121212L; /* R12 */
*(--stk) = (INT32U)0x03030303L; /* R3 */
*(--stk) = (INT32U)0x02020202L; /* R2 */
*(--stk) = (INT32U)0x01010101L; /* R1 */
*(--stk) = (INT32U)p_arg; /* R0 : argument */
/* Remaining registers saved on process stack */
*(--stk) = (INT32U)0x11111111L; /* R11 */
*(--stk) = (INT32U)0x10101010L; /* R10 */
*(--stk) = (INT32U)0x09090909L; /* R9 */
史海拾趣
|
项目简介 江苏省常熟市 吴栋梁 1 技术项目名称: 超音频宽带功率正弦波逆变电源;2 项目所属技术领域: 电力电子变流技术;3 项目现处发展阶段: 中试前期,工业化前期,应用产品后续研发阶 ...… 查看全部问答> |
|
请教高手怎么解决将linux系统移植到6410开发板上usb不能用的问题 如题:将android-linux-2.6.28的系统移植到s3c6410开发板上usb不能用 编译通过,初始化也通过,可是一插上U盘就报错: 提示错误: usb 1-1: new full speed USB device using s3c2410-ohci and address 2 usb 1-1: device descriptor read/64, ...… 查看全部问答> |
|
刚刚看到的,上传来给大家看看 压缩包已经重新打包上传,下载后解压到同一个文件里就OK! [ 本帖最后由 zhandetian 于 2010-8-12 10:43 编辑 ]… 查看全部问答> |
|
在确定硬件电路,驱动程序都没错的情况下,不知为何每次读SST25V016B寄存器的结果为0xFF;更不用说写单元数据了; 希望做过SST25V016B的大神们帮帮忙啊! … 查看全部问答> |
|
6467T,NANDFLASH启动,1.2V核电压(正常需求1.3V ),工作一段时间后,就发现板子起不来,但是换成别的模式有BOOT信息。这种状态下,要么重新烧写FLASH或者换一块FLASH又可以正常启动,这是FLASH造成的吗,感觉FLASH没有这么脆弱啊。还请大侠们多 ...… 查看全部问答> |




