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

2024-01-14 02:04

本文主要是介绍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 前面加上一段配置代码,后面学到了继续分析。

这篇关于imx6ull基于yocto工程的l汇编点亮ed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/603578

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

汇编:嵌入式软件架构学习资源

成为嵌入式软件架构设计师需要掌握多方面的知识,包括嵌入式系统、实时操作系统、硬件接口、软件设计模式等。 以下是一些推荐的博客和网站,可以帮助你深入学习嵌入式软件架构设计: ### 1. **Embedded.com**    - **网址**: [Embedded.com](https://www.embedded.com/)    - **简介**: 这是一个专注于嵌入式系统设计的专业网

二、Maven工程的创建--JavaSEJavaEE

1、idea创建Maven JavaSE工程:  2、idea创建Maven JavaEE工程:   (1)手动创建 (2)插件方式创建 在idea里安装插件JBLJavaToWeb; 选择需要生成的项目文件后,右击: 项目的webapp文件夹出现小蓝点,代表成功。

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

三、Maven工程的构建

首先,创建和构建是两个概念。 构建是指将源代码、依赖库和资源文件等转换为可执行或可部署的应用程序的过程。 在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。 项目构建是软件开发过程中至关重要的一部分,它能够大大提高软件开发效率,使得开发人员更加专注于应用程序的开发和维护,而不必关心应用程序的构建细节。 同时,项目构建还能将多人写的代码聚合,并能够自动化项目的构建和部署,

我在高职教STM32——准备HAL库工程模板(1)

新学期开学在即,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过更换库就意味着教学内容有很大变化,自己也就迟迟没有迈出调整这一步。现在,是时候做出变化了,笔者计划保持教学项

java工程的导入jar包

由于现在学习java web,java工程导入jar包都忘记了。 在此想记录一下:工程项目名:右击 -- Build Path --add External Archives 点击会弹出一个框 ,选择你要导入的jar路径就可以了。

【MyBatis学习14】MyBatis的逆向工程生成代码

1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。 2. 使用逆向工程 使用mybatis的逆向工程,需要导入逆向