![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM专栏
本专栏记录嵌入式ARM体系架构的芯片使用心得体会
圣地亚哥^
目前从事GUI、OSD相关工作,平时喜欢看驱动开发相关知识。
展开
-
【STM32】中断行为过程
基本概念1.ARM cortex_m3 内核支持 256 个中断(16 个内核+240 外部)和可编程 256 级中断优先级的设置,与其相关的中断控制和中断优先级控制寄存器(NVIC、SYSTICK 等)也都属于 cortex_m3 内核的部分。STM32 采用了 cortex_m3 内核,所以这部分仍旧保留使用,但 STM32并没有使用 cortex_m3 内核全部的东西(如内存保护单元 M...原创 2020-04-11 13:37:52 · 1659 阅读 · 0 评论 -
【STM32】HAL库结构
之前一直在使用HAL库但是从来没有仔细了解过HAL库的结构,今天写个博客来记录一下HAL库关键文件包含结构main.c/h \ stm32f1xx.c/h \ 其他用户文件stm32f1xx_hal.hstm32f2xx_hal_ppp.c \stm32f2xx_hal_ppp_ex.cstm32f1xx_hal_conf.hstm32f1xx_hal_ppp.hstm32f1xx_ha...原创 2020-04-09 10:51:42 · 1184 阅读 · 0 评论 -
ARM中特殊的功能寄存器
ARM7,ARM9,ARM11 有37个32-Bits长的寄存器.1 个用作PC( program counter)1个用作CPSR(current program status register)5个用作SPSR(saved program status registers)30 个通用寄存器Cortex体系结构下有40个32-Bits长的寄存器Cortex-A(ARM-v7)多出3个寄存器,Monitor 模式 r13_mon , r14_mon, spsr_mon1 个用作PC(原创 2020-08-28 21:23:52 · 1698 阅读 · 0 评论 -
系统移植详解过程
系统移植linux系统移植分为四块1、环境搭建2、BootLoader移植3、linux内核的移植4、根文件系统移植系统移植具体的部署方式分为两种:开发阶段系统的部署uboot镜像(ubootpak.bin) : 下载到flash/SDlinux内核镜像(uImage) : 通过tftp下载根文件系统(rootfs) : 通过nfs挂载特点:下载调试方便,适合做开发产品阶段系统的部署uboot镜像(ubootpak.bin) : 下载到flas原创 2020-08-25 21:27:41 · 3965 阅读 · 0 评论 -
linux根文件系统编译和移植过程
一、概念根文件系统:系统运行所必须依赖的一些文件(比如脚本、库、配置文件、命令…),本质就是目录和文件。根文件系统镜像:将根文件系统按照某种格式进行打包压缩后生成的单个文件 rootfs-----> ramdisk.img文件系统:一种管理和访问磁盘的软件机制,不同文件系统管理和访问磁盘的机制不同二、移植根文件系统的工具 —> busybox1、短小精悍2、版本更新较快,版本之间差异不大三、如何获取busyboxhttps://busybox.net/downloads/原创 2020-08-25 21:05:33 · 3614 阅读 · 0 评论 -
linux内核编译和移植过程
一、linux内核的特点1、linux内核是开源的,作者:linusgit : 版本管理工具源码由C语言和汇编实现2、linux内核支持多种硬件架构平台3、linux内核采用模块化方式编写,分层思想4、linux内核使用C和汇编代码实现,在内核中最好不要使用C++5、linux内核具有很好的移植和裁剪特性通过图形化界面的配置方式就可以完成裁剪二、linux内核源码的获取1、linux官方获取https://mirrors.edge.kernel.org/pub/linux/kern原创 2020-08-25 20:19:25 · 1341 阅读 · 0 评论 -
了解uboot及常用命令
一、bootloader概念boot:引导loader:加载bootloader:引导加载内核系统二、u-boot和bootloader的关系?bootloader是一些列引导内核程序的统称。u-boot属于bootloader中的一种。bootloader 种类:vivi redboot u-boot bios …嵌入式开发中都是使用的u-boot。三、u-boot的特点1、u-boot是一个开源的软件2、uboot支持多种架构,arm powerPC mips x86 …3、u原创 2020-08-24 21:17:17 · 326 阅读 · 0 评论 -
系统移植产品阶段的部署
产品阶段的部署uboot镜像(ubootpak.bin) : flash/SDlinux内核镜像(uImage) : flash/SD根文件系统镜像(ramdisk.img) : flash/SD1、拷贝uImage和ramdisk.img到tftpboot目录下2、启动开发板,进入uboot的交互界面3、 下载uImage镜像到EMMC中tftp 0x48000000 uImagemmc write 0x48000000 0x800 0x40004、下载r原创 2020-08-24 21:08:13 · 195 阅读 · 0 评论 -
系统移植开发阶段部署
开发阶段部署阶段uboot镜像(ubootpak.bin) : flash/SDlinux内核镜像(uImage) : tftp下载根文件系统(rootfs) : nfs挂载1、启动uboot,进入uboot的交互界面2、使用tftp命令下载uImage内核镜像到内存中。下载之前需要将uImage的镜像拷贝到tftpboot目录下。tftp 0x48000000 uImage3、设置uboot的自启动参数:bootargsbootargs:自启动的环境变量lin原创 2020-08-24 21:06:49 · 235 阅读 · 0 评论 -
linux下uboot编译和移植过程
一、获取u-boot源码1、u-boot官方获取(DENX)https://ftp.denx.de/pub/u-boot/2、从芯片厂家获取3、从开发板厂家获取4、从部门主管获取三星没有将S5p6818的硬件支持的源码开源到u-boot官方,不可以从官方获取u-boot源码,注:本次实验使用的是u-boot-2014.07版本 开发板是FS6818 芯片S5p6818二、u-boot版本的选择1、不选择太新2、不选择太旧3、选择稳定版本rc:表示测试版三、移植的准备工作获取硬件原创 2020-08-24 21:02:11 · 1566 阅读 · 0 评论 -
烧写uboot的三种方式
一、使用ubuntu中的sdtool工具将u-boot镜像烧写到SD卡中sdtool工具下载链接前提:必须使用读卡器,电脑自带的SD卡卡槽不可以1、拷贝sdtool工具到ubuntu中porting\系统移植资料\工具\sdtool2、sdtool工具中的文件分析s5p6818-sdmmc.sh : 将ubootpak.bin文件写到SD卡ubootpak.bin : u-boot的镜像文件后边u-boot移植目的就是得到ubootpak.bin文件。如果要测试自己的u-boot的镜原创 2020-08-22 21:07:38 · 11985 阅读 · 1 评论 -
gnu交叉编译相关的常用命令
前缀:arm-none-linux-gnueabi-ubuntu系统中x86架构的GUN命令:/usr/bin以arm阶段汇编点灯代码为例:gcc 编译命令arm-none-linux-gnueabi-gcc -c led_asm.S -o led_asm.old 链接:将所有的.o文件链接生成可执行文件(.elf)arm-none-linux-gnueabi-ld -Ttext=0x43c00000 led_asm.o -o led_asm.elf-Tmap.lds : 指定链接脚本原创 2020-08-22 19:57:23 · 596 阅读 · 0 评论 -
LED闪烁(汇编)
该汇编程序是基于S5P6818X芯片(cortex-A53)的一个简单汇编程序,实现LED闪烁功能 .text .global _start_start: @ 1. 设置GPIOA28引脚为GPIO功能 @ GPIOAALTFN1[25:24] = 0b00 @ 0xC001A024 为GPIOAALTFN1寄存器的地址 ldr r0, =0xC001A024 @在寄存器r0中存入GPIO控制寄存器GPIOAALTFN1的地址 ldr r1, [r0] @加载GPIO控制寄存器G原创 2020-08-11 22:04:03 · 7109 阅读 · 0 评论 -
异常处理程序汇编过程分析
当程序运行过程中出现异常的时候,CPU是怎么执行的呢,下面来看一下当一个中断发生时需要响应中断,那么就要保存现场:1、保存cpsr到spsr_<mode>2、修改cpsr 1.切换到ARM状态 2.切换到对应的异常模式(在这里是SVC) 3.禁止相应的中断位(根据需要)3、保存返回地址到lr_<mode>4、跳转到相应的异常向量表以上为保存现场的过程(四大步三小步)CPU自动完成保存现场的过程异常向量表异常向量表是内存上的一块地址空间,这块空间的大小是32字节原创 2020-08-11 20:29:56 · 563 阅读 · 0 评论 -
ARM常用汇编指令
1、数据操作指令数据搬移指令mov:移动指令mvn:取反移动指令语法格式:{cond}{s} {Rd}, {oprand2}mov r0, #0xFF // 立即数0xFF放入寄存器r0 立即数前需要加“#”mov r1, r0 // 将寄存器r0的数据放入寄存器r1中mvn r2, #0xFF // r2 = ~0xFF(0xFFFFFF00)mov r3, #0xFFFFFF // 0xFFFFFF是有效数,写入机器码会转换成立即数#~0xFF0000原创 2020-08-11 17:46:09 · 2426 阅读 · 0 评论 -
链接脚本分析
下面是一个简单的链接脚本,简单注释解释一下里面的大概内容/*链接脚本给编译器使用*/OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*//* 指定架构 */OUTPUT_ARCH(arm)/*入口*/ENTRY(_start)SECTIONS /*分段*/{ . = 0x00000000;原创 2020-08-11 15:32:04 · 114 阅读 · 0 评论 -
ARM是什么
ARM发展史1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn公司。起初,Acorn公司打算使用摩托罗拉公司的16位芯片,但是发现这种芯片太慢也太贵。"一台售价500英镑的机器,不可能使用价格100英镑的CPU!"他们转而向Intel公司索要80286芯片的设计资料,但是遭到拒绝,于是被迫自行研发原创 2020-08-07 20:37:45 · 1144 阅读 · 0 评论