当前位置: 首页 > news >正文

学习嵌入式之IMAX6ULL——GUN工具链+点灯+SDK开发裸机驱动

一、GUN工具链常用工具

1.gcc
gcc (GNU Compiler Collection)
功能:编译器(Compiler)

将C/C++等高级语言源代码转换为汇编代码
再将汇编代码转换为目标文件
支持多种编程语言和目标平台
提供丰富的优化选项和编译控制选项

2.ld
ld (GNU Linker)

功能:链接器(Linker)

将多个目标文件链接成可执行文件
解析和处理符号引用
进行地址分配和重定位
处理库文件的链接 

3.objcopy
objcopy (Binary File Converter)

功能:目标文件格式转换器

在不同格式的目标文件之间进行转换
将ELF格式转换为纯二进制格式(.bin)
从目标文件中提取特定的段(sections)
修改目标文件的内容
常用于嵌入式开发中的固件生成

4.objdump
objdump (Object File Disassembler)

功能:目标文件分析器/反汇编器

将机器码反汇编为汇编代码
查看目标文件的详细信息
分析程序的执行指令
显示各种文件格

二、编写C代码(点灯)

volatile (易变的、多变的)关键字:禁止编译器进行优化,必须根据指针间接访问所指向的地址;

功能引脚:

方向寄存器:

数据寄存器:

代码展示:

三、SDK(软件开发工具)

  • 直接使用定义好的相关寄存器,节省时间

SDK使用原理
寄存器地址是连续的,利用结构体装载内容,并宏定义该结构体的首地址;

四、链接脚本


这里每个格子我们称为段。其中我们经常关注的 有.text段保存的是机器代码;.rodata段保存的是只读数据;.data段已初始化的全局变量段;.bss未初始化 全局变量段。图示中仅仅列出了各个段和作用,但是 这些段每个部分究竟要放在什么地址呢?这就需要链接时决定。


五、SDK开发裸机驱动

        NXP 针对 I.MX6ULL 编写了一个 SDK 包,这个 SDK 包就类似于 STM32 的 STD 库或者HAL 库。库的意义在于将寄存器和对寄存器的操作用结构体和对应的函数加以封装,大大提高开发的效率,提高程序可读性等。可以说stm32的成功和意法半导体推出的SDK有着很大的关系。不是所有的半导体厂商都会为 Cortex-A 架构的芯 片编写裸机 SDK 包。


inputRegister:外设输入 IO 选择寄存器地址,有些 IO 在设置为其他的复用功能以后还需要设置 IO 输入寄存器, 比如 GPIO1_IO03 要复用为 UART1_RX 的话还需要设置
寄存器UART1_RX_DATA_SELECT_INPUT,此寄存器地址 为0X020E0624。
inputDaisy:寄存器 inputRegister 的值。
比如 GPIO1_IO03 要作为 UART1_RX 引脚的话此参数就是 1。
configRegister:未使用,函数IOMUXC_SetPinConfig 会使用这个寄存器。
inputOnfield : IO 软 件 输 入 使 能 ,就是IO复用功能 寄存器的SION。

http://www.dtcms.com/a/326867.html

相关文章:

  • 计算机网络:ovn数据通信都是用了哪些协议?
  • Java String类:不可变性的核心奥秘
  • Evaluation Warning: The document was created with Spire.XLS for Pyth用Python实现Excel转PDF并去除Spire.XLS水印
  • 银河通用招人形机器人强化学习算法工程师了
  • Python 类元编程(类工厂函数)
  • C语言(06)——二、八、十、十六进制的相互转换
  • Webpack Loader 完全指南:从原理到配置的深度解析
  • TRL - Transformer Reinforcement Learning 传递给SFTTrainer的数据集
  • 【linux】企业高性能web服务器
  • 多路转接 select
  • FinQ4Cn: 基于 MCP 协议的中国 A 股量化分析
  • CSS预处理器之Sass全面解析与实战指南
  • PowerDesigner生成带注释的sql方法
  • 腾讯前端面试模拟详解
  • 分享一款基于STC32G12K128单片机的螺丝机供料器控制板 ES-IO2422 S4
  • 浅谈 LangGraph 子图流式执行(subgraphs=True/False)模式
  • [鹧鸪云]光伏AI设计平台解锁电站开发新范式
  • Kubernetes生产环境健康检查自动化指南
  • Centos8系统在安装Git包时,报错:“没有任何匹配: git”
  • 【ros-humble】4.C++写法巡场海龟(服务通讯)
  • 搭建纯竞拍商城的核心技术要点与实施指南
  • 4-下一代防火墙组网方案
  • [Element-plus]动态设置组件的语言
  • GPT-oss:OpenAI再次开源新模型,技术报告解读
  • 【无标题】matplotlib与seaborn数据库
  • 基于FPGA的热电偶测温数据采集系统,替代NI的产品(二)总体设计方案
  • 嵌入式硬件中AI硬件设计方法与技巧
  • java内部类-匿名内部类
  • 编程技术杂谈4.0
  • Dify入门指南(2):5 分钟部署 Dify:云服务 vs 本地 Docker