日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

uCOS_II 移植到友善之臂mini2440

發(fā)布者:EternalBliss最新更新時間:2024-06-25 來源: elecfans關(guān)鍵字:uCOS_II  移植 手機看文章 掃描二維碼
隨時隨地手機看文章

1. 準備源代碼

在官網(wǎng)或者其他地方找到源代碼,我所用版本為以前下載的版本號V2.51。源碼有16個文件,其中體系結(jié)構(gòu)無關(guān)的             

OS_CORE.C       OS_MBOX.C      OS_FLAG..C

OS_SEM.C        OS_Q.C           OS_MUTEX.C
OS_TASK.C       OS_TIME.C        OS_MEM.C
uCOS_II.C (沒用到)       OS_CONFIG.H      uCOS_II.H
INCLUDE.H
與體系結(jié)構(gòu)相關(guān)的文件有三個
OS_CPU.H       OS_CPU_A.S    OS_CPU_C.C
二.選取開發(fā)環(huán)境ADS 1.2。(編譯器的選擇要考慮是否可以生成可重入性代碼)
三.修改和體系結(jié)構(gòu)有關(guān)的文件。主要有OS_CPU.H OS_CPU_A.S OS_CPU_C.C
1.修改OS_CPU.H OS_CPU.H
主要是定義了一些和具體CPU相關(guān)的常量,預(yù)編譯器相關(guān)的數(shù)據(jù)類型。其中需要修改的有:
OS_CRITICAL_METHOD=3 
這是關(guān)中斷的方式,在這里選擇OS_ENTER_CRITICAL(),而OS_ENTER_CRITICAL()  等價于(cpu_sr = OSCPUSaveSR()),這個函數(shù)在OS_CPU_A.S中,需要自己寫。
#define  OS_STK_GROWTH        1
這是棧生長方向,ADS1.2開發(fā)環(huán)境arm920t的堆棧生長方向為遞減的也就是說從高地址向低地址方向生長,而且是滿棧型的,就是棧指針指向有效的數(shù)據(jù)。
2.修改OS_CPU_C.C
OS_CPU_C.C主要定義了OSTaskStkInit()這個函數(shù)和其他一些hook擴展函數(shù)。Hook擴展函數(shù)不用修改,保持空。OSTaskStkInit()是堆棧初始化函數(shù),用在建立任務(wù)的函數(shù)OSTaskCreate()中,初始化任務(wù)的棧,在arm920t中需要在棧中保存的寄存器和數(shù)據(jù)為

  1. $task;          

  2. LR (R14)              

  3. R12                                                       

  4. R11                                                     

  5. R10                                                        

  6. R9                                                

  7. R8                                                         

  8. R7                                                     

  9. R6                                                         

  10. R5                                                       

  11. R4                                                         

  12. R3                                                         

  13. R2                                                         

  14. R1                                                         

  15. R0 :         (argument)  

  16. CPSR      (最后棧指針指到這里,這是棧的頂部,也就是最小的地址)  

所以堆棧初始化代碼為下,可以看出任務(wù)堆棧不能小于16*4 byte,否則棧會溢出。

  1. OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)  

  2. {  

  3.     INT32U *stk;  

  4.   

  5.     opt    = opt;                   /* 'opt' is not used, prevent warning */  

  6.     stk    = (INT32U *)ptos;        /* Load stack pointer */  

  7.     *(stk)   = (OS_STK)task;        /* Entry Point            */  

  8.     *(--stk) = (INT32U)0;           /* LR (R14)           */  

  9.     *(--stk) = (INT32U)0;           /* R12                */  

  10.     *(--stk) = (INT32U)0;           /* R11                */  

  11.     *(--stk) = (INT32U)0;           /* R10                */  

  12.     *(--stk) = (INT32U)0;           /* R9                 */  

  13.     *(--stk) = (INT32U)0;           /* R8                 */  

  14.     *(--stk) = (INT32U)0;           /* R7                 */  

  15.     *(--stk) = (INT32U)0;           /* R6                 */  

  16.     *(--stk) = (INT32U)0;           /* R5                 */  

  17.     *(--stk) = (INT32U)0;           /* R4                 */  

  18.     *(--stk) = (INT32U)0;           /* R3                 */  

  19.     *(--stk) = (INT32U)0;           /* R2                 */  

  20.     *(--stk) = (INT32U)0;           /* R1                 */  

  21.     *(--stk) = (INT32U)pdata;           /* R0 : argument      */  

  22.     *(--stk) = (INT32U)0x00000013L;     /* CPSR               */  

  23.     return ((OS_STK *)stk);  

[1] [2]
關(guān)鍵字:uCOS_II  移植 引用地址:uCOS_II 移植到友善之臂mini2440

上一篇:使用QEMU 建立mini2440的模擬仿真環(huán)境
下一篇:mini2440編譯2.6.39.4內(nèi)核

推薦閱讀最新更新時間:2025-06-07 23:36

迅為imx6ull開發(fā)板移植Debian文件系統(tǒng)
本教程將帶領(lǐng)大家移植 Debian 文件系統(tǒng)到 i.MX6ULL 終結(jié)者開發(fā)板上。 1 安裝 Qemu 和 Debootstrap 由于我們是在 Ubuntu 上構(gòu)建的 debian 的文件系統(tǒng),所以安裝這倆個工具我們直接使用 apt-get 命令即可。命令如下: apt-get install binfmt-support qemu qemu-user-static debootstrap如下圖所示: 2 抽取 Debain 文件系統(tǒng) 抽取文件系統(tǒng)我們使用的是 debootstrap 命令,我們執(zhí)行以下命令即可從 debian 下載源中獲取到文件系統(tǒng): debootstrap --arch=armhf --foreign bu
[單片機]
迅為imx6ull開發(fā)板<font color='red'>移植</font>Debian文件系統(tǒng)
2、內(nèi)核的配置和移植
1.linux內(nèi)核源碼目錄結(jié)構(gòu)1 源碼從哪里來 之前講過,我們使用2.6.35.7版本的內(nèi)核。這個版本的內(nèi)核有三種:第一種是kernel.org上的官方版本,第二種是三星移植過的,第三種是九鼎X210的移植版本。我們講課時使用第三種內(nèi)核來講解,后面的移植實驗使用第二種內(nèi)核來移植。 源碼在開發(fā)板光盤中有??梢宰约喝inux下解壓然后make distclean清理然后再次打包傳輸?shù)絯indows下去解壓分析;也可以直接去我網(wǎng)盤中下載我打包好的。 解壓后最終在windows下得到了一個kernel的源碼目錄樹,這個源碼目錄就是九鼎以三星移植過的內(nèi)核為原材料自己針對X210移植后的內(nèi)核版本。 分析源碼目錄下的單個文件 1 .m
[單片機]
2、內(nèi)核的配置和<font color='red'>移植</font>
GD32F103學(xué)習(xí)筆記(2)——在GD32F103移植STM32F103代碼
一、GD32與STM32區(qū)別 1.1 內(nèi)部結(jié)構(gòu)區(qū)別 1.1.1 內(nèi)核 GD32采用二代的M3內(nèi)核,STM32主要采用一代M3內(nèi)核,下圖是ARM公司的M3內(nèi)核勘誤表,GD使用的內(nèi)核只有752419這一個BUG。 1.1.2 主頻時鐘 使用HSE(高速外部時鐘):GD32的主頻最大108M,STM32的主頻最大72M 使用HSI(高速內(nèi)部時鐘):GD32的主頻最大108M,STM32的主頻最大64M 主頻大意味著單片機代碼運行的速度會更快,GD32的_NOP()時間比STM32更加短,所以不使用定時器做延時時要注意修改,項目中如果需要進行刷屏,開方運算,電機控制等操作,GD是一個不錯的選擇。 1.1.3 啟動時間 GD3
[單片機]
基于S3C2440和DM9000移植LWIP(一)
使用mini2440已經(jīng)有一段時間了。諸如裸機的LED,鍵盤開關(guān)等等等等也都試驗過了,uCOS,WinCE也是淺嘗了一下。如今想到了以太網(wǎng)。 由于mini2440的板上集成了一個DM9000的網(wǎng)卡,并且在CE系統(tǒng)里面成功的使用以太網(wǎng)與PC連接了。于是自然而然的想,能不能在uCOS下也實現(xiàn)以太網(wǎng)接口呢? 一上來什么都不懂,于是找一些資料,在這里要謝謝焦海波老師所著的嵌入式網(wǎng)絡(luò)系統(tǒng)設(shè)計一書,移植過程中很多資料都來源于這本書。其次是mikenoodle的單片機驅(qū)動DM9000網(wǎng)卡一文,里面詳細地講述如何在2440裸機下驅(qū)動DM9000網(wǎng)卡。 首先明確我們需要做的事情是什么?為了實現(xiàn)在uCOS下的LWIP協(xié)議。我們當(dāng)然需要一個LWIP協(xié)議
[單片機]
uboot在s3c2440上的移植(5)
一、移植環(huán)境 主 機:VMWare--Fedora 9 開發(fā)板:Mini2440--64MB Nand,Kernel:2.6.30.4 編譯器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步驟 9)實現(xiàn)u-boot對yaffs/yaffs2文件系統(tǒng)下載的支持。 注意:此篇對Nand的操作是基于MTD架構(gòu)方式,在“u-boot-2009.08在2440上的移植詳解(三)”中講到過。 通常一個Nnad Flash存儲設(shè)備由若干塊組成,1個塊由若干頁組成。一般128MB以下容量的Nand Flash芯片,一頁大小為528B,被依次分為2個256B的主數(shù)據(jù)區(qū)
[單片機]
linux-2.6.24.3下移植SD/MMC到S3C2440上的全歷程
1.起首下載2.6.24.3內(nèi)核源碼。其他內(nèi)核不包管可以。移植部門就不講了,假如不會參考我的其他文章。我僅僅測試了這個。 2.去http://svnweb.openmoko.org/*chec ... _mci.patch?rev=4096 下載SD/MMC patch,其他晚期版本不可,我就栽倒了這其中間。 3.把 s3c_mci.patch copy到linux-2.6.24.3下。執(zhí)行patch -p1 s3c_mci.patch 呵呵,早年不會用patch,此次也用上了。 4.make menuconfig,選擇MMC/SD ,選擇言語CP437,ISO 8859-1,最好也同時選擇SCSI相關(guān)的工具吧,連USB也一塊支撐
[單片機]
RTEMS 的 MINI2440 QEMU 移植bsp_libc_init與 rtems_libio_init
這段時間瘋子一樣的做RTEMS的移植,一直未果,遇到如下問題。 1. bsp_libc_init 問題,執(zhí)行之前 gdb 調(diào)試信息 ricky@ricky-laptop:~/rtems/rtems-4.9.5/examples-4.9.5/hello_world_c$ arm-rtems4.9-gdb o-optimize/hello.exe GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This i
[單片機]
如何把機智云生成的協(xié)議移植到STM32CubeMX生成的工程
降低IoT開發(fā)門檻是機智云的不懈追求,所以機智云先后推出自助開發(fā)平臺、MCU代碼自動生成器、APP在線生成器、D3規(guī)則引擎等工具,不斷延伸物聯(lián)網(wǎng)生態(tài),兼容不同系列的MCU產(chǎn)品,適配STM32cubemx,大大簡化 MCU 開發(fā),降低門檻。 本文以程空氣質(zhì)量監(jiān)測應(yīng)用為例,講解STM32接入機智云,通過STM32CubeMX 圖形化配置工具生成 MCU 工程,然后只需編寫幾個簡單的接口,即可將機智云自助生成的 STM32 方案工程里面的設(shè)備協(xié)議移植過來,這樣可以十分方便的將其它型號 STM32 微控制 器連上機智云,開發(fā)智能產(chǎn)品。 本文的讀者對象需要掌握的是: 1. 知道如何利用機智云自助開發(fā)生成 MCU 工程;2. 知道如何
[單片機]
如何把機智云生成的協(xié)議<font color='red'>移植</font>到STM32CubeMX生成的工程
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved