IMX6ULL裸机学习(2)— 在Ubuntu下搭建开发环境

IMX6ULL裸机学习(1)— 搭建Ubuntu下的开发环境一、文件传输设置参考:Ubuntu下的各种文件传输设置二、通过SSH登录到Ubuntu参考:MobaXterm 软件入门之安装和使用但是我们可以看到终端命令行全部为白色,会经常导致命令与输出内容难以分辨。所以我们可以让主机名和用户名显示颜色。打开用户主目录下的 .bashrc文件,然后找到force_color_prompt,将其前面的#注释符去掉,然后保存退出。使用source ~/.bashrc让其起作用,即可看到效果三、
分类: 其他 发布时间: 01-24 23:54 阅读次数: 0

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
分类: 其他 发布时间: 01-24 23:54 阅读次数: 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复用模式寄存器的值写
分类: 其他 发布时间: 01-24 23:54 阅读次数: 0

STM32裸机开发(1) — 搭建GCC开发环境

STM32裸机开发(1)— 搭建GCC开发环境一、安装GIT参考:Git&Github使用教程(二) — Git安装和使用二、安装MINGW环境因为mingw的服务器在国外,所以经常安装失败,我们通过安装CodeBlocks的方式来获得MINGW环境下载网址:http://www.codeblocks.org/downloads/26下载好后双击开始安装即可点击安装,然后等待安装完成然后我们将其安装目录下的bin文件夹添加到环境变量里,例如我这里是C:\Program File
分类: 其他 发布时间: 01-24 23:54 阅读次数: 0

STM32裸机开发(2) — 使用STM32CubeMX点亮第一个LED

STM32裸机开发(2) — 点亮第一个LED一、新建工程使用STM32CubeMX新建一个工程,打开STM32CubeMX,点击创建一个工程点击搜索STM32F103ZE,选中需要的封装,点击开始创建我们可以先将工程保存一下,以免丢失,点击【File】->【Save Project】工程新建好之后会直接进入【Pinout 】选项卡,这个时候界面会展示芯片完整引脚图,在引脚图中,我们可以对引脚功能进行配置。黄色的引脚主要是一些电源和 GND 引脚,如果某个引脚已经被使用,那么会显示为绿
分类: 其他 发布时间: 01-24 23:53 阅读次数: 0

Makefile学习之路(1) — Makefile的引入及规则

Makefile学习之路(1) — Makefile的引入及规则一、什么是Makefile在一些有很多源文件的项目工程中使用一个个的gcc命令来编译是非常吃力的,所以我们需要一个工具来管理这些编译过程,这就是make,make是一个应用程序,它根据 Makefile 来做事。Makefile 负责管理整个编译流程:要编译哪些文件?怎么编译这些文件?怎么把它们链接成一个可执行程序, Makefile 定义了一系列的规则来实现这些管理。一般来说将 Makefile 文件取名为“ Makefile ”
分类: 其他 发布时间: 01-24 23:53 阅读次数: 0

Makefile学习之路(2) — Makefile的变量和通配符

Makefile学习之路(2) — Makefile的变量和通配符一、变量Makefile 也支持变量定义,变量的定义也让的我们的 Makefile 更加简化,可复用。变量定义一般采用大写字母,赋值方式像 C 语言的赋值方式一样,如下:A = HelloWorld变量使用即取值时使用括号将变量括起来再加$符,如下:echo $(A)编写如下Makefile使用make命令执行,可以看到,其实他更类似与C语言中的宏定义另外,我们可以在echo的前面加上@符号,让该命令不显示出来执
分类: 其他 发布时间: 01-24 23:53 阅读次数: 0

Makefile学习之路(3) — Makefile的函数

Makefile学习之路(3) — Makefile的函数一、前言Makefile 提供了大量的函数,这些函数都是make本身实现的,函数调用的格式如下:$(function argument1, argument2, argument3)这里function是函数名, argument是该函数的参数。参数和函数名之间是用空格或 Tab 隔开,如果有多个参数,它们之间用逗号隔开。这些空格和逗号不是参数值的一部分。二、wildcard函数函数wildcard语法如下$(wildcard pat
分类: 其他 发布时间: 01-24 23:53 阅读次数: 0

Makefile学习之路(4) — 添加头文件依赖

Makefile学习之路(4) — 添加头文件依赖一、编写代码编写如下源文件和头文件:提示编写Makefile如下:hello : hello.o william.o gcc $^ -o hello%.o : %.c gcc -c $< -o $@ -I.clean : rm *.o hello -rf二、make编译我们使用make命令进行编译,然后执行,如下所示接下啦我们修改william.h中age的宏定义为22,再次编译,执行可以看到,执行make编译失
分类: 其他 发布时间: 01-24 23:52 阅读次数: 0

STM32裸机开发(3) — 使用汇编点亮LED灯

STM32裸机开发(3) — 使用汇编点亮LED灯一、在keil-MDK下编写程序打开keil,新建工程,选择STM32F103ZE新建start.s文件,编写如下代码 PRESERVE8 THUMB; Vector Table Mapped to Address 0 at Reset AREA RESET, DATA, READONLY EXPORT __Vectors
分类: 其他 发布时间: 01-24 23:52 阅读次数: 0

STM32裸机开发(4) — 编写C语言点亮LED灯

STM32裸机开发(4) — 编写C语言点亮LED灯一、前言使用c语言时,要用到的一个很重要的就是栈,所以我们要在汇编中就设置好栈;而对于当下的stm32f103来说,我们可以在0x08000000处写入栈顶地址,也可以在汇编程序中使用指令设置SP二、在MDK中实现修改start.s,在0x08000000处写入栈顶地址,如下所示:Stack_Size EQU 0x00000400 ;定义堆栈大小为1024byte AREA STACK, NOINIT,
分类: 其他 发布时间: 01-24 23:52 阅读次数: 0

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 {
分类: 其他 发布时间: 01-24 23:51 阅读次数: 0

IMX6ULL裸机学习(7)— 使用链接脚本链接代码

IMX6ULL裸机学习(7)— 使用链接脚本链接代码一、链接脚本的作用链接脚本的作用就是用来指定程序的链接方式的,一个程序中包含各种文件,例如start.o、main.o、led.o等,每个文件有包含如代码段、数据段等各种段,而链接脚本的作用就是用来指定各种文件各种段的链接方式。前面我们都没有使用链接文件,只使用了-Ttext参数来指明代码段的链接地址,其他都是按照默认链接的,使用之前曾强调要将start.o文件放在最前面。二、编写链接文件将Makefile中的链接命令该为如下所示$(LD) -g
分类: 其他 发布时间: 01-24 23:51 阅读次数: 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};
分类: 其他 发布时间: 01-24 23:51 阅读次数: 0

IMX6ULL裸机学习(9)— IMX6ULL的异常和中断

IMX6ULL裸机学习(9)— IMX6ULL的异常和中断一、什么是异常CPU 在运行的过程中,会被各种“异常”打断,这些“异常”有:① 指令未定义② 指令、数据访问有问题③ SWI(软中断)④ 快中断⑤ 中断我们可以看到,中断是一种特殊的异常二、IMX6ULL的异常处理机制对于CPU来说,它每执行完一条指令都会检查有无异常产生,当CPU发现有异常产生时,它就会进行处理。首先,会把当前PC寄存器的值保存到LR(R14)寄存器中,然后对于不同的异常,跳去不同的地址执行程序。这些地址由
分类: 其他 发布时间: 01-24 23:51 阅读次数: 0

IMX6ULL裸机学习(10)— 未定义异常和SVC异常实例

IMX6ULL裸机学习(10)— 未定义异常和SVC异常实例一、未定义异常未定义的指令异常就是 CPU 或协处理器不认识这条指令,执行这样的指令时就会产生“未定义指令异常”。所以我们只要在程序中写入一个不是指令的数据就可以产生未定义异常。如下所示,使用.word伪指令,可以在当前位置放一个word型的值,在imx6ull中,即一个32位数据.word 0x12345678然后我们修改start.s文件如下所示,其中其他几个异常暂时没有实现,先用0填充.text
分类: 其他 发布时间: 01-24 23:50 阅读次数: 0

IMX6ULL裸机学习(11)— 中断和GIC中断控制器

IMX6ULL裸机学习(11)— 中断和GIC一、什么是GICGIC即通用中断控制器( Generic Interrupt Controller),ARM 体系结构定义了通用中断控制器(GIC),该控制器包括一组用于管理单核或多核系统中的中断的硬件资源。 GIC 提供了内存映射寄存器,可用于管理中断源和行为,以及用于将中断路由到各个 CPU 核。它使软件能够屏蔽,启用和禁用来自各个中断源的中断,以对各个中断源进行优先级排序和生成软件触发中断。如下图所示,对于各种中断都是通过GIC到达CPU的。另外
分类: 其他 发布时间: 01-24 23:50 阅读次数: 0

STM32裸机开发(5) — 在Keil-MDK下编写uart串口打印程序

STM32裸机开发(5) — 在Keil-MDK下编写uart串口打印程序一、构建程序目录新建src文件夹,用来存放c源代码新建inc文件夹,用来存放头文件二、编写源文件在src文件夹下新建uart.c文件如下所示#include "uart.h"typedef unsigned int uint32_t;typedef struct{ volatile uint32_t SR; /*!< USART Status register, Address offset: 0x
分类: 其他 发布时间: 01-24 23:50 阅读次数: 0

国内镜像 提速使用

外网访问太慢,直接用国内镜像访问常用镜像搜狐 mysql镜像 http://mirrors.sohu.com/mysql/华为 jdk镜像 https://mirrors.huaweicloud.com/java/jdk/
分类: 其他 发布时间: 01-24 23:50 阅读次数: 0

判断一个数是2的幂次方

程序public class Power2Algorithm { public static void main(String[] args) { System.out.println(isPower2(4)); System.out.println(isPower2(6)); } public static boolean isPower2(int num) { return (num&(num-1))==0;
分类: 其他 发布时间: 01-24 23:49 阅读次数: 0