![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IMX6ULL裸机
文章平均质量分 80
Willliam_william
这个作者很懒,什么都没留下…
展开
-
IMX6ULL裸机学习(11)— 中断和GIC中断控制器
IMX6ULL裸机学习(11)— 中断和GIC一、什么是GICGIC即通用中断控制器( Generic Interrupt Controller),ARM 体系结构定义了通用中断控制器(GIC),该控制器包括一组用于管理单核或多核系统中的中断的硬件资源。 GIC 提供了内存映射寄存器,可用于管理中断源和行为,以及用于将中断路由到各个 CPU 核。它使软件能够屏蔽,启用和禁用来自各个中断源的中断,以对各个中断源进行优先级排序和生成软件触发中断。如下图所示,对于各种中断都是通过GIC到达CPU的。另外原创 2021-01-17 16:35:34 · 2912 阅读 · 2 评论 -
IMX6ULL裸机学习(10)— 未定义异常和SVC异常实例
IMX6ULL裸机学习(10)— 未定义异常和SVC异常实例一、未定义异常未定义的指令异常就是 CPU 或协处理器不认识这条指令,执行这样的指令时就会产生“未定义指令异常”。所以我们只要在程序中写入一个不是指令的数据就可以产生未定义异常。如下所示,使用.word伪指令,可以在当前位置放一个word型的值,在imx6ull中,即一个32位数据.word 0x12345678然后我们修改start.s文件如下所示,其中其他几个异常暂时没有实现,先用0填充.text原创 2021-01-11 00:13:35 · 861 阅读 · 1 评论 -
IMX6ULL裸机学习(9)— IMX6ULL的异常和中断
IMX6ULL裸机学习(9)— IMX6ULL的异常和中断一、什么是异常CPU 在运行的过程中,会被各种“异常”打断,这些“异常”有:① 指令未定义② 指令、数据访问有问题③ SWI(软中断)④ 快中断⑤ 中断我们可以看到,中断是一种特殊的异常二、IMX6ULL的异常处理机制对于CPU来说,它每执行完一条指令都会检查有无异常产生,当CPU发现有异常产生时,它就会进行处理。首先,会把当前PC寄存器的值保存到LR(R14)寄存器中,然后对于不同的异常,跳去不同的地址执行程序。这些地址由原创 2021-01-10 22:54:26 · 1215 阅读 · 0 评论 -
IMX6ULL裸机学习(8)— 清除BSS段
IMX6ULL裸机学习(8)— 清除BSS段一、什么是BSS段bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。bss是英文Block Started by Symbol的简称。bss段属于静态内存分配。二、修改mian函数修改main函数如下所示:#include "uart.h"#include "led.h"int mydata = 12315;const int myconst = 22315;int my[1024] = {0};原创 2021-01-05 23:06:21 · 855 阅读 · 0 评论 -
IMX6ULL裸机学习(7)— 使用链接脚本链接代码
IMX6ULL裸机学习(7)— 使用链接脚本链接代码一、链接脚本的作用链接脚本的作用就是用来指定程序的链接方式的,一个程序中包含各种文件,例如start.o、main.o、led.o等,每个文件有包含如代码段、数据段等各种段,而链接脚本的作用就是用来指定各种文件各种段的链接方式。前面我们都没有使用链接文件,只使用了-Ttext参数来指明代码段的链接地址,其他都是按照默认链接的,使用之前曾强调要将start.o文件放在最前面。二、编写链接文件将Makefile中的链接命令该为如下所示$(LD) -g原创 2021-01-04 00:11:53 · 813 阅读 · 2 评论 -
IMX6ULL裸机学习(6)— 编写uart串口打印程序
IMX6ULL裸机学习(6)— 编写uart串口打印程序一、构建程序目录新建src文件夹,用来存放c源代码新建inc文件夹,用来存放头文件新建build文件夹,用来存放编译输出文件二、编写源文件在src文件夹下新建uart.c文件如下所示#include "uart.h"/*根据IMX6ULL芯片手册<<55.15 UART Memory Map/Register Definition>>的3608页,定义UART的结构体,*/typedef struct {原创 2021-01-03 00:37:59 · 1125 阅读 · 0 评论 -
IMX6ULL裸机学习(5)— 编写C语言程序点亮LED
IMX6ULL裸机学习(5)— 编写C语言程序点亮LED一、前言使用c语言时,要用到的一个很重要的就是栈,所以我们要在汇编中就设置好栈;二、编写汇编代码编写start.s如下所示:.text /* .text段保存代码,是只读和可执行的,后面的指令都属于.text段。 */.global _start /* .global表示_start是一个全局符号,会在链接器链接时用到 */_star原创 2021-01-02 22:41:15 · 677 阅读 · 0 评论 -
IMX6ULL裸机学习(4)— 编写汇编程序点亮LED
IMX6ULL裸机学习(4)— 编写程序点亮LED一、编写程序新建一个led.S文件,然后编写如下代码。.global _start /* .global表示_start是一个全局符号 */_start: /* 标签_start,汇编程序的默认入口是_start */ /* 1、设置 GPIO1_IO03 复用为 GPIO1_IO03 */ LDR R0, = 0X020E0068 /* 将GPIO1_IO03复用模式寄存器的值写原创 2020-12-13 21:27:59 · 1326 阅读 · 1 评论 -
IMX6ULL裸机学习(3)— 在Windows下搭建开发环境
IMX6ULL裸机学习(3)— 在Windows下搭建开发环境一、安装GIT参考:Git&Github使用教程(二) — Git安装和使用二、安装MinGW进入MinGW官网下载:https://osdn.net/projects/mingw/releases/下载后双击安装然后勾选所有选项后点击安装二、安装GCC编译器从Linaro公司下载Linaro GCC编译工具链:https://releases.linaro.org,点击下载后传送到ubuntu下git clone原创 2020-12-12 23:16:07 · 1894 阅读 · 1 评论 -
IMX6ULL裸机学习(2)— 在Ubuntu下搭建开发环境
IMX6ULL裸机学习(1)— 搭建Ubuntu下的开发环境一、文件传输设置参考:Ubuntu下的各种文件传输设置二、通过SSH登录到Ubuntu参考:MobaXterm 软件入门之安装和使用但是我们可以看到终端命令行全部为白色,会经常导致命令与输出内容难以分辨。所以我们可以让主机名和用户名显示颜色。打开用户主目录下的 .bashrc文件,然后找到force_color_prompt,将其前面的#注释符去掉,然后保存退出。使用source ~/.bashrc让其起作用,即可看到效果三、原创 2020-12-12 22:38:35 · 639 阅读 · 0 评论 -
IMX6ULL裸机学习(1)— 安装VMware并创建Ubnuntu虚拟机
IMX6ULL裸机学习(1)— 搭建Ubuntu下的开发环境一、安装 VMwareWindows 下有很多虚拟机软件,目前市面上流行的有 VMware 和 VirtualBox。 VMware分为收费专业版Workstation Pro 和 非 商 用 免 费 版 Workstation Player, 所以我们使用免费的Workstation Player。首先从VMware 官网( www.vmware.com)下载 Workstation Player 安装包,点击【下载】 -> 【免费产原创 2020-12-10 23:00:33 · 868 阅读 · 1 评论