日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第九章我們使用匯編編寫了?LED?燈的實驗,在實際開發過程中大部分還是使用?C?語言,匯編只是用來完成?C?語言環境的初始化,本章我么就來實現用匯編完成?C?語言環境的初始化,然后用?C?語言實現?LED?的例程。

10.1 C?程序版LED例程簡介

匯編完成?C?語言環境的初始化主要包括內存初始化,設置堆棧指針等等,當這些工作完成以后就可以跳轉到?C?語言,執行?C?程序了,所以我們有兩部分事情要做:

1.匯編文件,用來完成?C?語言的環境初始化

2.C?語言文件,主要實現我們的業務功能,比武我們本章的點亮?LED。

10.2?原理圖分析 原理圖分析

本章用到的硬件資源和第?6?章的一樣,可以參照第六章的硬件原理分析。

10.3?程序編寫

本實驗對應的例程在光盤資料的:i.MX6UL?終結者光盤資料\04_裸機例程源碼\2_led_C program?目錄下,我們在?Ubuntu?系統建立“1_Led_C program”文件夾,然后在“Led_C program”文件夾下建立文件:start.S、main.c、main.h。其中?start.S?是匯編文件,main.c?和?main.h?是?C?語言文件。

我們在前面新建的“srart.S”文件中輸入下面的代碼:

1.?global _start /*?全局標號?*/

2. /*

3. *?描述:?_start?函數,程序從此函數開始執行,此函數主要功能是設置?C

4. *?運行環境。

5. */

6. _start:

7. /*?進入?SVC?模式?*/

8. mrs r0, cpsr

9. bic r0, r0, #0x1f /*?將?r0?寄存器中的低?5?位清零,也就是?cpsr?的?M0~M4 */

10. orr r0, r0, #0x13 /* r0?或上?0x13,表示使用?SVC?模式?*/

11. msr cpsr, r0 /*?將?r0?的數據寫入到?cpsr_c?中?*/

12. ldr sp, =0X80200000 /*?設置棧指針?*/

13. b main /*?跳轉到?main?函數?*/

第?1?行定義了一個全局標號_start

第?6?行是程序的入口、

第?8?行到第?11?行是設置處理器進入?SVC?模式

第?12?行通過?ldr?指令設置?SVC?模式下的?sp?指針(0x80200000),i.MX6 ULL?終結者開發板上的內存地址范

圍是?0X80000000~0XA0000000(512MB)或?0X80000000~0X90000000(256MB),所以不論是?512MB?版本還是256MB?版本的,其內存起始地址都是?0X80000000,由于?i.MX6ULL?的堆棧是向下正常的,所以?SP?指針設置成?0X80200000(0X80200000-0X80000000,是?2MB?的棧空間,足夠我們使用了)。

第?13?行是挑喜歡到?main?函數(C?語言的入口函數。

至此匯編部分的程序我們就完成了,主要用來設置處理器在?SVC?模式下運行,然后初始化?SP?指針,最后跳轉到?C?程序的?main?入口函數。如果大家有接觸過三星的?S3C2440

總結

以上是生活随笔為你收集整理的开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。