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

imx6ull基于yocto工程的l汇编点亮ed

通过汇编点亮led

在裸机状态下通过汇编点亮led,即没有操作系统,(uboot kernel rootfs 都不需要实现)。

led点亮原理

1.GPIO复用

根据原理图,找到led对应的引脚(pin),复用为GPIO(只有GPIO才能控制输入输出)
芯片手册查询寄存器的方法,以CSI_HSYNC为例,在IOMUXC章节搜索CSI_HSYNC 找到

在这里插入图片描述
关键字是MUX意为复用,20E_01E0为该寄存器的地址,根据手册将其复用为GPIO
在这里插入图片描述
即将该寄存器的值设置为0b101

2. PAD属性

引脚的电气属性配置,如驱动能力、上拉/下拉选择等,占时不太清楚,按要求设置

3.GPIO.GDIR

控制GPIO为输入还是输出。芯片手册查询方法
在这里插入图片描述
在GPIO章节,找到GPIO memory map 中的GPIOx_GDIR,如想将GPIO4_IO20设置为输出
那么就需要找到GPIO4_GDIR的寄存器,然后将该寄存器的第20位设置位1

4.GPIO.DR

控制输出高低电平,芯片手册查询方法同上,找到GPIOx_DR,设置对应的寄存器

yocto编译led.bin

在yocto工程中创建recipes,结构如下
在这里插入图片描述
led.s和Makefile不多解释,led.bb如下

SUMMARY = " led test "
DESCRIPTION = " my led "
LICENSE = "CLOSED"FILESEXTRAPATHS_prepend := "${THISDIR}/:"#设置源码路径,在bitbake在执行时会从当前路径的led目录中获取源码,目录名最好与bb文件名称相同
SRC_URI = "file://led/"#设定工作路径 编译时会将SRC_URI 下的文件unpack到S路径下
S = "${WORKDIR}/led"# 为了确保我们使用的是交叉编译器
DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}binutils"EXTRA_OEMAKE = "'CROSS_COMPILE=${TARGET_PREFIX}'"# 添加任务来编译汇编文件
do_compile() {
#相当于在 S = "${WORKDIR}/led" 下执行make ,前面 EXTRA_OEMAKE 设定了交叉编译工具oe_runmake
}

使用bitbake -c compile -f led 即可编译得到led.bin

烧录

直接将led.bin 烧录到sd卡是肯定不能执行的,因为做的是裸机使用,从sd卡启动时,片内的rom代码是无法直接将led.bin 加载到内存运行的,必须在led.bin 前面加上一段配置代码,后面学到了继续分析。

http://www.lryc.cn/news/279814.html

相关文章:

  • vue 前端等比例压缩图片(再转换成文件后上传后端)
  • 解决在eclipse2021中,用mysql-connector-java-8.0.18.jar不兼容,导致无法访问数据库问题
  • 5 微信小程序
  • 百度面经整理(2024最新)
  • c++的构造函数
  • 基于ZU19EG的100G-UDP解决方案
  • 行为型设计模式——备忘录模式
  • 自定义HBase负载均衡器MyCustomBalancer实现步骤与代码解析
  • 企业网站建设中常用的英文翻译
  • vscode运行Python的两种方法,及无法运行的原因
  • 【猫头虎分享】全面揭秘鸿蒙4.0:华为的技术革新与市场影响
  • Java内存模型之可见性
  • 【docker】Docker Compose 使用介绍
  • uniapp怎么开发插件并发布
  • 为什么不直接public,多此一举用get、set,一文给你说明白
  • golang 记录一次协程和协程池的使用,利用ants协程池来处理定时器导致服务全部阻塞
  • 【Postman-windows-9.12.2版本安装与汉化】
  • 11Spring IoC注解式开发(下)(负责注入的注解/全注解开发)
  • Grafana Promtail 配置解析
  • 电脑DIY-主板参数
  • JVM知识总结(持续更新)
  • 信息系统安全——基于 KALI 和 Metasploit 的渗透测试
  • 05. 深入理解 GPT 架构
  • PHP开发日志 ━━ php8.3安装与使用组件Xdebug
  • Python - 深夜数据结构与算法之 Two-Ended BFS
  • langchain-Agent-工具检索
  • 猫头虎分享:探索TypeScript的世界 — TS基础入门 ‍
  • Unity-生命周期函数
  • SQL概述及SQL分类
  • [VSCode] VSCode 常用快捷键