0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I.MX6ULL官方SDK驱动LED灯

华仔的编程随笔 2023-05-03 20:53 次阅读

官方SDK简介

I.MX6ULL官方提供了裸机SDK包,使得学习上手册很。I.MX6ULL的SDK包在NXP官网下载https://www.nxp.com/search?keyword=i.MX%25206ULL%2520SDK&start=0&category=software

9307d6fc6f838e6b206f4a507577ae20ae19084379e6172bb46e96245bd60fff.png

当然原子在资料盘中也给我们提供了,在目录L:\\baidudownloads\\【正点原子】阿尔法Linux开发板(A盘)-基础资料\\【正点原子】阿尔法Linux开发板(A盘)-基础资料\\07、I.MX6U参考资料\\03、I.MX6ULL SDK包目录下面:

c88fe0500e157ab0f2c77fb872c412cb9a4fe01e06595812db44d55940512818.png

双击安装程序,在目录选择时,指定目录,好在以后需要时找得到

f07c4c158a184c15364346a923496915873760a4c8a4f7288029936ceb6b43a6.png

安装好后,文件夹如下:

77f0d7ae24bb5b845803e75b0f3296cafdaae2c781ae8ad9c7cb59206e0a33bc.png

我们裸机开发的话用到以下三个文件:

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。

整个 SDK 包我们就需要上面这三个文件,把这三个文件准备好,我们后面移植要用。

41b0d34f6e94f082bb0106c780b717242e053a36126d88ca579a18a5b878d749.png

98a18e4ddac692bdbb1bab3b645d14d11ade44ec5a79295edc2e3c319353135b.png

我们把这三个文拷到一个文件夹,以备以后开发使用。

b0cfb64bc30566012cb92a4af6eb00b543ac032d70606b4b3567e74bc1fbb02f.png

编写实验程序

  1. 新建一个名为cc.h的头文件,cc.h中存放着一些SDK库文件需要使用的数据类型,如下所示:
/***************************************************************
Copyright © lugl.
文件名 : main.h
作者 : 刘建华
版本 : V1.0
描述 : 有关变量的类型定义,nxp官方SDK的一些移植文件会用到。
其他 : 此程序学习左中凯老师课程
日志 : 初版 2023/5/3 刘建华修改
**************************************************************/
/************************************************************

* 
* 自定义一些数据类型供库文件使用
* 
* /
  */
  #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 */
  1. start.S:
/***************************************************************
Copyright © lugl.
文件名 : start.s
作者 : 刘建华
版本 : V1.0
描述 : I.MX6U-ALPHA/I.MX6ULL 开发板启动文件,完成 C 环境初始化,
C 环境初始化完成以后跳转到 C 代码。
其他 : 此程序学习左中凯老师课程
日志 : 初版 2023/5/3 刘建华修改
**************************************************************/
.global _start       @全局标号

/*

* 描述:_start函数,程序从此函灵敏开始执行,
* ```
  此函数主要功能是设置C运行环境

*/

_start:

/*  进入SVC模式 */
mrs r0, cpsr
bic r0, r0, #0x1f    @ 将r0的低5位清零,也就是cpsr的M0-M4
orr r0, r0, #0x13    @ r0或上0x13,表示使用SVC模式
msr cpsr, r0         @ 将r0 的数据写入到cpsr_c中

ldr sp, =0x80200000  @ 设置栈指针
b main               @ 跳转到main函数(再也不用回来了)
  1. main.c
/***************************************************************
Copyright © lugl.
文件名 : main.c
作者 : 刘建华
版本 : V1.0
描述 : 使用C语言来点亮开发板的LED灯,基于官方的SDK来开发。
学习掌握如何用c语言来完成对I.MX6U的GPIO初始化和控制
其他 : 此程序学习左中凯老师课程
需要使用到的文件有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所有外设时钟
* @param       :无
* @return      :无
* 

***/
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对应的GPIO
* @param       :无
* @return      :无
* 

*/
void led_init(void)
{
/* 初始化IO 复用 */
IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);
/* 配置 IO的属性 */
IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03, 0x10b0);
/* 初始化GPIO 设置GPIO1_IO03  为输出*/
GPIO1->GDIR |= (1<<3);
/* 设置GPIO1——IO03为低电平,打开LED0 */
GPIO1->DR &= ~(1<<3);
}

/************************************************************

* @descriptions: 打开LED灯
* @param       : 无
* @return      : 无
  *************************************************************/
void led_on(void)
{
/*
  * 将GPIO1_DR 的bit3清零,打开led0灯
    */
    GPIO1->DR &= ~(1<<3);
    }

/************************************************************

* @descriptions: 关闭LED灯
* @param       : 无
* @return      : 无
  *************************************************************/
void led_off(void)
{
/*
  * 将GPIO1_DR 的bit3置1,关闭led0灯
    */
    GPIO1->DR |= (1<<3);
    }

/************************************************************

* @descriptions: 短时间延时函数
* @param -n    : 要延时循环次数,模式延时
* @return      : 无
  *************************************************************/
  void delay_short(volatile unsigned int n)
  {
  while (n--)
  {
  ;
  }
  }

/************************************************************

* @descriptions: 延时函数,在396MHz的主频下延时时间大约为1ms
* @param -n    : 要延时的ms数
* @return      : 无
  *************************************************************/
  void delay(volatile unsigned int n)
  {
  while (n--)
  {
  delay_short(0x7ff);
  }

}

/************************************************************

* @descriptions: main函数
* @param       : 无
* @return      : 无
  *************************************************************/
  int main(void)
  {
  clk_enable();  //使能所有时钟
  led_init();    //初始化LED
  
  while (1)
  {
  led_on();   //打开LED
  delay(500); //延时
  led_off();  //关闭LED
  delay(500);
  }
  return 0;
  }
  1. lds、makefile 拷贝前面的就OK,
  2. 把文件放到虚拟机上,运行make,就得到ledc.bin文件,烧写到SD卡

06725e846809d30cc9c26c158f351d857296e903dcf5017b1021362457fe6ad2.png

5dd6650983ad8c4b13699cee3c783f91f12640f33acf307b87f1dfc80e9ac81b.png

经验

教程上说,三个SDK文件需要做相应的修改,我们在编译时,根据错误提示修改就行了。这次的实验主要体验SDK在裸机开发方面所提供的方便。特别是宏定义来一给一些固定的参数

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23134

    浏览量

    658404
  • NXP
    NXP
    +关注

    关注

    60

    文章

    1267

    浏览量

    183269
  • 开发板
    +关注

    关注

    25

    文章

    4943

    浏览量

    97188
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1026

    浏览量

    45774
  • i.MX6
    +关注

    关注

    1

    文章

    37

    浏览量

    16279
收藏 人收藏

    评论

    相关推荐

    i.MX6ULL 驱动开发7—按键输入捕获与GPIO输入配置与高低电平读取

    本篇主要介绍了i.MX6ULL的按键检测的使用,主要的知识点是设备树的修改,以及GPIO的输入配置与高低电平的读取。
    的头像 发表于 05-24 09:11 6128次阅读
    <b class='flag-5'>i.MX6ULL</b> <b class='flag-5'>驱动</b>开发7—按键输入捕获与GPIO输入配置与高低电平读取

    使用i.MX6ULL开发板进行Linux根文件系统的完善

    上一篇推文讲了怎么移植根文件系统,并在i.MX6ULL开发板中运行起来,但是会出现一些提示,现在来进行根文件的完善。
    发表于 10-17 11:13 763次阅读

    移植NXP官方linux 5.4内核到i.MX6ULL开发板

    本文描述移植NXP官方 linux 5.4 内核到i.MX6ULL开发板。
    发表于 12-19 11:10 2003次阅读

    迅为I.MX6ULL终结者开发板支持JTAG调试

    i.MX6ULL SDK开发包NXP官方提供了i.MX6ULLSDK开发包, 这个SDK包提供
    发表于 05-06 14:09

    i.MX6ULL开发板硬件资源

    迅为i.MX6ULL 终结者开发板硬件资源非常丰富,几乎将 i.MX6ULL 芯片的所有资源都扩展引出到底板上了,底板提供了丰富的外设接口,开发板的尺寸是 190mm*125mm,充分考虑了人性化设计,整体显得十分大。
    发表于 12-29 06:18

    初识 i.MX6ULL 寄存器

    裸机开发_L1_汇编LED实验0. 本节目标1. 硬件层电路2. 初识 i.MX6ULL 寄存器2.1 i.MX6ULL 时钟控制寄存器2.2 i.MX6ULL IO复用寄存器2.3
    发表于 12-20 07:13

    关于i.MX6ULL配置GPIO

    正如学习C语言时写的第一段代码都是“HelloWorld!”,接触一款新的处理器时往往是从点亮一个LED开始;而点亮一个LED,则需要操作这款芯片的GPIO外设。那么作为广受欢迎的i.MX6ULL
    发表于 08-05 10:37

    I.MX6ULL UART传输问题求解

    I.MX6ULL UART传输问题
    发表于 04-21 08:09

    珠海明远智睿科技联合NXP强势推出i.MX6ull核心板

    NXP I.MX6ULL是一个高性能、低功耗、高性价比处理器系列,基于ARM Cortex-A7内核,主频可达900MHz。i.MX 6ULL应用处理器包括一个集成的电源管理模块,可以省掉外部
    发表于 04-24 14:10 549次阅读

    飞凌i.MX6ULL开发板的评测,再次进阶拥有更高的性价比

    处理器MCIMX6Y2开发设计,采用先进的ARMCortex-A7内核,运行速度高达800MHz。i.MX6ULL应用处理器包括一个集成的电源管理模块,降低了外接电源的复杂性,并简化了上电时序。 i.MX6ULL
    发表于 10-27 11:55 1464次阅读
    飞凌<b class='flag-5'>i.MX6ULL</b>开发板的评测,再次进阶拥有更高的性价比

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

    “性价比高,功能接口丰富,资料齐全,稳定性强”这是许多用户对飞凌FETMX6ULL-S核心板的评价。作为NXP公司一颗经典的MPU,i.MX6ULL的市场认可度无需多言。而作为NXP公司的金牌
    发表于 04-11 15:05 1139次阅读
    基于NXP <b class='flag-5'>i.MX6ULL</b>处理器的FETMX<b class='flag-5'>6ULL</b>-C核心板

    i.MX6ULL驱动开发4——点亮LED(寄存器版)

    本篇主要介绍了如何通过操作寄存器来点亮i.MX6ULL开发板上的led,通过编写LED对应的驱动程序和应用程序,实现程序设计的分层。
    的头像 发表于 05-21 21:26 2939次阅读
    【<b class='flag-5'>i.MX6ULL</b>】<b class='flag-5'>驱动</b>开发4——点亮<b class='flag-5'>LED</b>(寄存器版)

    基于i.MX6ULL点亮LED

    都说入门一款芯片的第一步是点亮LED,但是i.MX6ULL入门门槛比较高,特别是通过自学入门的,这个系列已经写了好久了,最近打算在项目不急的时候加快一下学习进度,现在就开始学习一下怎么点亮一个LED
    的头像 发表于 03-06 09:09 787次阅读

    【北京迅为】i.MX6ULL开发板移植 Debian 文件系统

    【北京迅为】i.MX6ULL开发板移植 Debian 文件系统
    的头像 发表于 02-10 15:34 1108次阅读
    【北京迅为】<b class='flag-5'>i.MX6ULL</b>开发板移植 Debian 文件系统

    基于i.MX6ULL的掉电检测设计与软件测试

    基于i.MX6ULL的掉电检测设计与软件测试基于i.MX6ULL平台设计实现掉电检测功能,首先选择一路IO,利用IO电平变化触发中断,在编写驱动时捕获该路GPIO的中断,然后在中断响应函数中发
    的头像 发表于 11-09 10:40 811次阅读
    基于<b class='flag-5'>i.MX6ULL</b>的掉电检测设计与软件测试