![](https://img-blog.csdnimg.cn/2020112010362714.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
从0学arm
文章平均质量分 83
关注公众号:一口Linux,所有文章课免费阅读。
一口君为了让大家更好的更快的学习ARM,根据自己多年研发和教学经验,将ARM的知识点逐步分解,最终分解成二十篇文章。内容设置上可以说是奶妈式的讲解,大家只需要根据我的文章,按部就班的学习,就能够达到掌握ARM汇编。记住,学的不是汇编,是ARM架构。
一口Linux
《从零开始学ARM》作者,长期分享嵌入式、linux、网络、arm知识。
展开
-
嵌入式工程师到底要不要学习ARM汇编指令?arm学习文章汇总
到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】1. 从0开始学ARM-安装Keil MDK uVision集成开发环境原创 2020-11-17 21:59:32 · 2414 阅读 · 1 评论 -
嵌入式软件开发人员有必要学习系统移植的知识吗?【ppt获取见文末】
用户只需要一条命令就能制作所需要的uboot、kernel、文件系统,而书中除了ARM汇编、裸机开发等知识,还涉及到系统移植的一些知识点。可以说要想成一个资深的底层工程师,这些知识都是必须掌握的。视频中配套开发板使用的是讯为的exynos4412全能板。将很多系统移植的软件包、制作工具等都封装在sdk中,我个人觉得,要想真正的理解和掌握嵌入式系统,而且虽然厂家提供的sdk封装的已经非常好了,为了让粉丝更好的学习我的新书里面的知识,作为使用者,几乎不用考虑这方面的内容,我觉得只要有时间,随时都可以学习,原创 2024-01-14 19:23:21 · 600 阅读 · 0 评论 -
新书稿费终于下来了!你猜有多少?
我的新书《从零开始学ARM》从正式出版到现在已经有半年时间了!第一批印刷的几千册已经基本销售完,第二版会对其中勘误进行修正,并继续继续印刷。前两年写书、审稿,所有业余时间都耗在这上面了,在下面这篇文章里,我详细的说了自己是如何有效利用业余时间写书的。尤其我的爱人,负责了孩子的所有作业的辅导,每次看到她被孩子气的暴跳如雷,我内心就十分的愧疚。由于之前几乎所有时间都用来改文章,缺少锻炼,再加上神经一直崩的比较紧,体检多了好几个异常。现在终于没有了审稿的压力,多了很多自由时间,原创 2023-11-07 20:18:48 · 668 阅读 · 2 评论 -
《从零开始学ARM》勘误
【代码】《从零开始学ARM》勘误。原创 2023-10-08 22:49:40 · 526 阅读 · 2 评论 -
签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!
我的新书经过千难万险终于上架,所以上周日搞了签名预售的活动,挂了300本,一上线很快就被大家买光了,留言需要单独写一些话的老铁,我也都尽量满足了,如果一楼还请见谅;在B站直播间参加抽奖活动的老铁,赠送的Linux知识图谱,也都一并发货。此外微店没有回填物流单号(太费事了),想查看物流信息的老铁请登录。其他老铁如果收到的货有什么问题的请发单号给我。后面不再组织统一签名售书活动了,如果有再需要签名的老铁,欢迎来南京找我面基!招待!原创 2023-05-13 16:07:35 · 533 阅读 · 0 评论 -
我的第一本书终于要印刷了!
在决定出书的时候,当时已经在公众号写了有一百多篇原创文章,每天8116(早8点出门,晚上11点到家,每周干6天),编辑发来了一个好消息,我的书最快下周就可以印刷出版了。这几位都是业内翘楚,百度百科上都有他们的详细信息,但是后来真正写起来的时候发现自己还是想的太简单了,在重庆每天早上8点多起床,夜里12点多到宾馆,从开始动笔到提交第一稿,前后有1年的时间,但是写书的话,要考虑的东西就非常多了,写博文和写书的难度差别还是很大的,内容必须严谨,每一句话都必须推敲,知识体系要完整、章节分配要合理,原创 2023-04-16 10:07:18 · 1181 阅读 · 2 评论 -
ARMv8-A 地址翻译技术之MMU的前世今生
MMU的重要性不言而喻,支撑操作系统之上的各种复杂应用。但在正式讲MMU之前,我们先说说MMU的发展史,因为ARMv8-A的MMU相当复杂,直接切入正题,会显得比较枯燥。废话不多说,咱们马上开始:一、前言:关于虚拟内存系统的演变史,MMU在其中扮演了什么样的角色。可以参考这一篇文章《操作系统的靠谱管家:虚拟内存》早期计算机是没有MMU的概念的,也没有对存储器的抽象,直接将物理内存暴露给程序用。那个时候硬件资源有限,大家都勒紧裤腰带写程序,不敢多浪费一个字节。我曾经规划过一个游戏掌机的开源项目,将早期原创 2022-03-13 22:28:54 · 1664 阅读 · 0 评论 -
嵌入式驱动工程师学习路线【建议收藏】
一口君曾经是某见的教学总监,带过的学生也有大几千了,基本都从事linux相关开发工作。现在在各行各业也基本都是翘楚,有的都成公司技术主管,带领几十人上百人团队。网上看了很多的嵌入式学习路线,有的还凑活,有的纯粹是打广告卖板子招生,有的为了博人眼球东拼西凑,几乎把整个行业用得着用不着的技术都写上去了,没有侧重点,简直是劝退指南。一口君凭借多年的研发和开发经验,整理了嵌入式学习的最经典路线,后续一口君也会根据这个大纲录制教学视频。目前《从0学Linux驱动第一期》视频已经在B站更新完毕。《从0学ARM第原创 2021-08-23 23:29:47 · 13888 阅读 · 16 评论 -
油腻老爷们,你是有多久没化过妆了?
因为有些需求,需要拍一张正装照。我已经受够了那些小摄像馆拍的照片了,完全拍不出我的神韵!效果还不如我手机开个美颜效果好!生活问题,问邻居有时候效率很高!在小区群里,问了一下邻居!推荐了一家万达广场的店!这位美邻,你这个推荐语,真的是让我无法拒绝你的推荐!!因为能让一个刻薄的女人由衷的赞美另外一个女人,这就已经说明一切了!啥也不说了,下单!空荡荡的万达广场因为疫情原因,平日热闹非凡的万达广场,冷冷清清!看不到几个顾客!真心希望疫情抓紧过去!到店了这家店在南京开了很多分原创 2021-08-01 12:33:05 · 645 阅读 · 2 评论 -
23.从0学ARM-网卡DM9000及uboot协议栈详解
第二十章网卡网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。由于其拥有MAC地址,因此属于OSI模型的第2层。它使得用户可以通过电缆或无线相互连接。每一个网卡都有一个被称为MAC地址的独一无二的48位串行号,它被写在卡上的一块ROM中。在网络上的每一个计算机都必须拥有一个独一无二的MAC地址。没有任何两块被生产出来的网卡拥有同样的地址。这是因为电气电子工程师协会(IEEE)负责为网络接口控制器(网卡)销售商分配唯一的MAC地址。网卡上面装有处理器和存储器(包括RAM和ROM)。网卡和原创 2021-05-24 22:11:31 · 2034 阅读 · 8 评论 -
20.uboot简介
一、uboot简介U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开放源码项目。在操作系统方面,U-Boot不仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系统。目前支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solari原创 2021-04-06 20:48:28 · 1502 阅读 · 0 评论 -
22.从0学ARM-移植uboot支持exynos4412
本章主要目的是了解u-boot 的代码结构及移植方法。UBOOT发展到现在,架构已经发生了不少的变化。现在不少开发学习板子上都在用1.1.6版本的。不过发展到现在,UBOOT经历了不少改进,变得越来越标准。现在的UBOOT不再用以前版本号的方式进行描述。而采用日期的方式进行发布(例如这次最新版本命名为uboot-2011.03)。一、实验环境1、 ubuntu 16.04发行版2、 u-boot-2013.013、 FS_4412平台 (EXYNOS 4412)4、 交叉编译器 arm-non原创 2021-03-31 19:23:39 · 715 阅读 · 0 评论 -
linux环境搭建-ubuntu16.04安装
一、环境搭建环境1、 ubuntu 16.04发行版2、 u-boot-2013.013、 FS_4412平台 (EXYNOS 4412)4、 交叉编译器 arm-none-linux-gnueabi-gcc1. vmwarevmware下载地址https://www.vmware.com/go/getworkstation-win回到顶部二、VMware15的安装1、双击VMware-workstation-full-xxx.exe。然后下一步2、勾选我接受许可协议,下一步原创 2021-03-10 10:25:28 · 9232 阅读 · 10 评论 -
嵌入式linux开发uboot移植(二)——uboot工程源码目录分析
嵌入式linux开发uboot移植(二)——uboot工程源码目录分析本文分析的uboot为uboot_smdkv210,是三星官方发布的基于S5PV210评估开发板对应的uboot。一、uboot源码目录结构解析1、cpu本文件夹下的子文件与处理器相关,每个文件夹代表一种CPU系列。每个子目录中都包括cpu.c、interrupts.c、start.S文件。cpu.c主要用于初始化CPU、设置指令Cache和数据Cache等interrupt.c主要...原创 2021-02-17 09:17:52 · 643 阅读 · 1 评论 -
嵌入式linux开发uboot移植(一)——uboot项目简介
一、uboot简介U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开放源码项目。在操作系统方面,U-Boot不仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系统。目前支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Es...原创 2021-02-17 09:17:34 · 842 阅读 · 0 评论 -
23. 基于Cortex-A9 uboot代码启动分析
我们在前面的arm系列课程,已经讲解了arm的架构、汇编指令、异常、常用外设的控制器驱动,那么我们已经具备开发arm系列产品的基本技能。本篇给大家介绍一款比较常用的bootloader,uboot,通过uboot的介绍,让大家把之前所有的知识点融会贯通起来。一、uboot1. 概念2. 常用命令printenvsetenvipaddrgatewaybootcmdbootargs二、exynos-4412 Soc 启动顺序要想了解exynos-4412的启动顺序,我们首先需要了解该so原创 2021-01-25 20:00:53 · 1247 阅读 · 0 评论 -
15. 从0开始学ARM-位置无关码
1111原创 2021-01-12 23:31:27 · 698 阅读 · 0 评论 -
14. 从0学ARM-exynos4412-看门狗裸机程序编写
一、概念看门狗的简称是WDT(Watch Dog Timer),exynos4412scp中的看门狗定时器(WDT)是一种定时装置。工作原理由(一般需要客户编写)软件读写定时器相关的寄存器,打开看门狗,并设定计数时间(以秒或分钟计算),定时器计数计满,由软件清零,以表明系统状态正常,这时,定时器计数重新开始,反复,否则,看门狗认为系统异常或有其他特定事件发生,触发系统复位信号,或提供中断,系统正常后重复定时器计数。这样只要软件正常运行,就不会出现复位或触发中断。当软件死机或运行出错时,由看门狗定时器原创 2021-01-08 10:24:47 · 1073 阅读 · 0 评论 -
13. 从0学ARM-Cortex-A9 RTC裸机程序编写
11原创 2021-01-05 08:53:02 · 739 阅读 · 0 评论 -
11. 基于ARM Cortex-A9中断详解
1111原创 2020-12-28 11:11:28 · 2639 阅读 · 4 评论 -
10. 从0学ARM-基于Exynos4412的pwm详解
111原创 2020-12-26 09:06:44 · 3368 阅读 · 6 评论 -
9. 从0学ARM Cortex-A9 LED汇编、C语言驱动编写
11原创 2020-12-22 11:56:51 · 1254 阅读 · 2 评论 -
21.从0学ARM-为什么使用结构体效率会高?一文给你讲透
为什么使用结构体效率会高?通过汇编代码给你讲透!原创 2020-12-19 13:54:17 · 674 阅读 · 1 评论 -
8. 从0学ARM-内联汇编、混合汇编、ATPCS规则
【混合汇编】【4】内联汇编:在c语言代码中嵌入汇编指令(1)Gcc 通过关键字“asm”来声明内联汇编(2)格式: asm或__asm__开头,小括号+分号,括号内容写汇编指令。指令+\n\t 用双引号引上asm(code : output operand list : input operand list : clobber list);(3)例1:无参数,无返回值asm( //汇编指令“mrs r0,cpsr \n\t”“bic r0,r0,#0x80 \n\t”“msr c原创 2020-12-13 17:27:03 · 1843 阅读 · 0 评论 -
7. 从0学ARM-GNU伪指令、代码编译,lds使用
111原创 2020-12-10 09:07:17 · 1226 阅读 · 0 评论 -
6. 从0开始学ARM-异常及中断处理、异常向量表、swi
1111原创 2020-12-06 21:28:18 · 1702 阅读 · 3 评论 -
5. 从0开始学ARM-MRS、MSR、寻址操作、原子操作原理
程序状态寄存器访问指令ARM微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据。MRSMRS{条件} 通用寄存器,程序状态寄存器(CPSR或SPSR)MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况:当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。如:MRS R0,原创 2020-12-02 18:16:26 · 1561 阅读 · 0 评论 -
4. 从0开始学ARM-ARM指令,移位、数据处理、BL、机器码
1111原创 2020-11-29 22:45:34 · 3030 阅读 · 0 评论 -
3. 从0开始学ARM-ARM模式、寄存器、流水线
11原创 2020-11-26 08:10:43 · 2994 阅读 · 0 评论 -
2. 从0开始学ARM-CPU原理,基于ARM的SOC讲解
ARM指令集ARM内部结构运算器、ALU等SOC结构总线数据 地址 信号APBAHB各种控制器原创 2020-11-22 23:05:15 · 4554 阅读 · 0 评论 -
到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】
前言有粉丝问我到底什么是ARM,下面一口君给大家整理一下ARM一些概念。ARM 即Advanced RISC Machines的缩写。1、ARM既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。2、ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,而是转让设计许可,由合作公司生产各具特色的芯片。3、ARM处理器的内核是统一的,由ARM公司提供,而片内部件则是多样的,由各大半导体公司设计,这使得ARM设计嵌入式原创 2020-10-16 08:18:45 · 6408 阅读 · 10 评论 -
1. 从0开始学ARM-安装Keil MDK uVision集成开发环境
关于ARM的一些基本概念,大家可以参考我之前的文章:《到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】》0. 如何学习arm?ARM的知识点很多很杂,很多同学都遇到过类似的问题,单个的汇编指令一看就懂,但是结合uboot代码后,却一段都看不下去,网上搜资料,一大堆,屡不清楚条理,什么原因呢?主要是各个知识点之间关系千丝万缕,融汇成一个整体,要想看懂类似于uboot这样的汇编代码,除了了解汇编指令,还要要了解整个SOC的架构,了解各个控制器的使用原理以原创 2020-10-24 14:17:10 · 2421 阅读 · 4 评论 -
12. 如何实现基于Cortex-A9 的UART裸机驱动并实现printf函数
前言通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。UART是什么UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmi原创 2020-08-31 08:21:54 · 1085 阅读 · 0 评论 -
18. SPI协议,spi转can,MCP2515裸机驱动详解
SPI概述Serial Peripheral interface 通用串行外围设备接口是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。SPI特点采用主-从模式(Master-Slave) 的控制方式SPI 规定了两个 SPI 设备之间通信必须由主设备原创 2020-09-21 09:44:03 · 6204 阅读 · 4 评论 -
17.基于Cortex-A9,i2c 外设详解
本文基于三星Cortex-A9架构,Exynos4412讲解I2C原理、以及基于I2C的mpu6050陀螺仪的数据读取实例(包括在裸机模式下数据的读取以及基于Linux驱动的读取)。还会分析Linux内核I2C架构,篇幅过长,绝对干货。裸机篇本篇首先详细讲解I2C时序,然后讲解如何基于三星I2C控制实现裸机读取从设备信息方法。前言I2C(Inter-Integrated Circuit)总线(也称 IIC 或 I2C) 是有PHILIPS公司开发的两线式串行总线,用于连接微控制器及外围设备,是微电子原创 2020-09-17 19:22:32 · 1115 阅读 · 0 评论 -
16.从0学arm,基于Cortex-A9 ADC裸机驱动详解
前言在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序。ARM架构:Cortex-A9Linux内核:3.14在讲述ADC之前,我们需要先了解什么是模拟信号和数字信号。模拟信号主要是与离散的数字信号相对的连续的信号。模拟信号分布于自然界的各个角落,如每天温度的变化,而数字信号是人为的抽象出来的在时间上不连续的信号。电学上的模拟信号是主要是指幅度和相位都连续的电信号,此信号可以被模拟电路进行各种运算,如放大,相加,相乘等。模原创 2020-08-23 09:04:00 · 3937 阅读 · 1 评论 -
SPI转can芯片CSM300详解以及Linux驱动移植调试笔记
https://www.zlg.cn/index.php/power/power/product/id/218.html原创 2020-10-30 09:12:11 · 4481 阅读 · 7 评论