官方SDK簡(jiǎn)介
I.MX6ULL官方提供了裸機(jī)SDK包,使得學(xué)習(xí)上手冊(cè)很。I.MX6ULL的SDK包在NXP官網(wǎng)下載https://www.nxp.com/search?keyword=i.MX%25206ULL%2520SDK&start=0&category=software
當(dāng)然原子在資料盤中也給我們提供了,在目錄L:\\baidudownloads\\【正點(diǎn)原子】阿爾法Linux開發(fā)板(A盤)-基礎(chǔ)資料\\【正點(diǎn)原子】阿爾法Linux開發(fā)板(A盤)-基礎(chǔ)資料\\07、I.MX6U參考資料\\03、I.MX6ULL SDK包目錄下面:
雙擊安裝程序,在目錄選擇時(shí),指定目錄,好在以后需要時(shí)找得到
安裝好后,文件夾如下:
我們裸機(jī)開發(fā)的話用到以下三個(gè)文件:
fsl_common.h:位置為 SDK_2.2_MCIM6ULL\\devices\\MCIMX6Y2\\drivers\\fsl_common.h。
fsl_iomuxc.h: 位置為 SDK_2.2_MCIM6ULL\\devices\\MCIMX6Y2\\drivers\\fsl_iomuxc.h。
MCIMX6Y2.h: 位置為 SDK_2.2_MCIM6ULL\\devices\\MCIMX6Y2\\MCIMX6YH2.h。
整個(gè) SDK 包我們就需要上面這三個(gè)文件,把這三個(gè)文件準(zhǔn)備好,我們后面移植要用。
我們把這三個(gè)文拷到一個(gè)文件夾,以備以后開發(fā)使用。
編寫實(shí)驗(yàn)程序
- 新建一個(gè)名為cc.h的頭文件,cc.h中存放著一些SDK庫(kù)文件需要使用的數(shù)據(jù)類型,如下所示:
/***************************************************************
Copyright ? lugl.
文件名 : main.h
作者 : 劉建華
版本 : V1.0
描述 : 有關(guān)變量的類型定義,nxp官方SDK的一些移植文件會(huì)用到。
其他 : 此程序?qū)W習(xí)左中凱老師課程
日志 : 初版 2023/5/3 劉建華修改
**************************************************************/
/************************************************************
*
* 自定義一些數(shù)據(jù)類型供庫(kù)文件使用
*
* /
*/
#define __I volatile
#define __O volatile
#define __IO volatile
#define ON 1
#define OFF 0
typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
typedef signed char s8;
typedef signed short int s16;
typedef signed int s32;
typedef signed long long int s64;
typedef unsigned char u8;
typedef unsigned short int u16;
typedef unsigned int u32;
typedef unsigned long long int u64;
#endif /* __CC_H */
- start.S:
/***************************************************************
Copyright ? lugl.
文件名 : start.s
作者 : 劉建華
版本 : V1.0
描述 : I.MX6U-ALPHA/I.MX6ULL 開發(fā)板啟動(dòng)文件,完成 C 環(huán)境初始化,
C 環(huán)境初始化完成以后跳轉(zhuǎn)到 C 代碼。
其他 : 此程序?qū)W習(xí)左中凱老師課程
日志 : 初版 2023/5/3 劉建華修改
**************************************************************/
.global _start @全局標(biāo)號(hào)
/*
* 描述:_start函數(shù),程序從此函靈敏開始執(zhí)行,
* ```
此函數(shù)主要功能是設(shè)置C運(yùn)行環(huán)境
*/
_start:
/* 進(jìn)入SVC模式 */
mrs r0, cpsr
bic r0, r0, #0x1f @ 將r0的低5位清零,也就是cpsr的M0-M4
orr r0, r0, #0x13 @ r0或上0x13,表示使用SVC模式
msr cpsr, r0 @ 將r0 的數(shù)據(jù)寫入到cpsr_c中
ldr sp, =0x80200000 @ 設(shè)置棧指針
b main @ 跳轉(zhuǎn)到main函數(shù)(再也不用回來(lái)了)
- main.c
/***************************************************************
Copyright ? lugl.
文件名 : main.c
作者 : 劉建華
版本 : V1.0
描述 : 使用C語(yǔ)言來(lái)點(diǎn)亮開發(fā)板的LED燈,基于官方的SDK來(lái)開發(fā)。
學(xué)習(xí)掌握如何用c語(yǔ)言來(lái)完成對(duì)I.MX6U的GPIO初始化和控制
其他 : 此程序?qū)W習(xí)左中凱老師課程
需要使用到的文件有fsl.common.h、fsl_iomuxc.h、MCIMX6Y2.h
日志 : 初版 2023/5/3劉建華修改
**************************************************************/
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"
/***
* @description :使能I.MX6ULL所有外設(shè)時(shí)鐘
* @param :無(wú)
* @return :無(wú)
*
***/
void clk_enable(void)
{
CCM->CCGR0 = 0xFFFFFFFF;
CCM->CCGR1 = 0xFFFFFFFF;
CCM->CCGR2 = 0xFFFFFFFF;
CCM->CCGR3 = 0xFFFFFFFF;
CCM->CCGR4 = 0xFFFFFFFF;
CCM->CCGR5 = 0xFFFFFFFF;
CCM->CCGR6 = 0xFFFFFFFF;
}
/***
* @description :初始化LED對(duì)應(yīng)的GPIO
* @param :無(wú)
* @return :無(wú)
*
*/
void led_init(void)
{
/* 初始化IO 復(fù)用 */
IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);
/* 配置 IO的屬性 */
IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03, 0x10b0);
/* 初始化GPIO 設(shè)置GPIO1_IO03 為輸出*/
GPIO1->GDIR |= (1<<3);
/* 設(shè)置GPIO1——IO03為低電平,打開LED0 */
GPIO1->DR &= ~(1<<3);
}
/************************************************************
* @descriptions: 打開LED燈
* @param : 無(wú)
* @return : 無(wú)
*************************************************************/
void led_on(void)
{
/*
* 將GPIO1_DR 的bit3清零,打開led0燈
*/
GPIO1->DR &= ~(1<<3);
}
/************************************************************
* @descriptions: 關(guān)閉LED燈
* @param : 無(wú)
* @return : 無(wú)
*************************************************************/
void led_off(void)
{
/*
* 將GPIO1_DR 的bit3置1,關(guān)閉led0燈
*/
GPIO1->DR |= (1<<3);
}
/************************************************************
* @descriptions: 短時(shí)間延時(shí)函數(shù)
* @param -n : 要延時(shí)循環(huán)次數(shù),模式延時(shí)
* @return : 無(wú)
*************************************************************/
void delay_short(volatile unsigned int n)
{
while (n--)
{
;
}
}
/************************************************************
* @descriptions: 延時(shí)函數(shù),在396MHz的主頻下延時(shí)時(shí)間大約為1ms
* @param -n : 要延時(shí)的ms數(shù)
* @return : 無(wú)
*************************************************************/
void delay(volatile unsigned int n)
{
while (n--)
{
delay_short(0x7ff);
}
}
/************************************************************
* @descriptions: main函數(shù)
* @param : 無(wú)
* @return : 無(wú)
*************************************************************/
int main(void)
{
clk_enable(); //使能所有時(shí)鐘
led_init(); //初始化LED
while (1)
{
led_on(); //打開LED
delay(500); //延時(shí)
led_off(); //關(guān)閉LED
delay(500);
}
return 0;
}
- lds、makefile 拷貝前面的就OK,
- 把文件放到虛擬機(jī)上,運(yùn)行make,就得到ledc.bin文件,燒寫到SD卡
經(jīng)驗(yàn)
教程上說(shuō),三個(gè)SDK文件需要做相應(yīng)的修改,我們?cè)诰幾g時(shí),根據(jù)錯(cuò)誤提示修改就行了。這次的實(shí)驗(yàn)主要體驗(yàn)SDK在裸機(jī)開發(fā)方面所提供的方便。特別是宏定義來(lái)一給一些固定的參數(shù)。
-
led
+關(guān)注
關(guān)注
242文章
23834瀏覽量
673874 -
NXP
+關(guān)注
關(guān)注
61文章
1347瀏覽量
189292 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5675瀏覽量
104559 -
SDK
+關(guān)注
關(guān)注
3文章
1077瀏覽量
49048 -
i.MX6
+關(guān)注
關(guān)注
1文章
37瀏覽量
16561
發(fā)布評(píng)論請(qǐng)先 登錄
i.MX6ULL 驅(qū)動(dòng)開發(fā)7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

移植NXP官方linux 5.4內(nèi)核到i.MX6ULL開發(fā)板
如何在i.MX6ULL睡眠時(shí)停止刷新LCD?
迅為I.MX6ULL終結(jié)者開發(fā)板支持JTAG調(diào)試
i.MX6ULL開發(fā)板硬件資源
初識(shí) i.MX6ULL 寄存器
關(guān)于i.MX6ULL配置GPIO
飛凌i.MX6ULL開發(fā)板的評(píng)測(cè),再次進(jìn)階擁有更高的性價(jià)比

基于NXP i.MX6ULL處理器的FETMX6ULL-C核心板

【i.MX6ULL】驅(qū)動(dòng)開發(fā)4——點(diǎn)亮LED(寄存器版)

基于i.MX6ULL點(diǎn)亮LED
基于i.MX6ULL的掉電檢測(cè)設(shè)計(jì)與軟件測(cè)試

評(píng)論