【课程】8小时学透ARM体系架构
作为软件工程师,有没有下面的困惑:
软件跑死了,定位到是cpu相关的问题,不知如何入手;
内存访问出错,不知道如何查询页表属性;
配置GIC时,group0/1, secure/non-secure,fiq/irq傻傻分不清;
公司有昂贵的arm调试器,不知道能用来做什么。
几千页的arm架构手册和arm cpu手册如同天书;
。。。。。。
遇到上面问题千万别灰心,无数人都倒在了这里,不好走的这条路,我们陪你一起走。
如左耳朵耗子在《程序员练级攻略(2018)》所说,作为一个专业的程序员需要的学习的系统知识包括:体系结构,操作系统,网络协议。
目前主流体系结构有x86,arm,risc-v等,x86有太多的历史包袱,过于复杂;而risc-v虽然快速发展,但是目前仅仅在MCU领域有实际应用,全面与arm竞争尚需时日。根据arm公司提供的数据,arm cpu在整个基础设施领域已经占到将近30%的份额(如下图)。
本课程从arm cpu架构入手,从arm指令集到内存管理到arm cpu,从单核到多核;紧贴ARM CPU手册(TRM)和系统架构手册(ARM ARM/ARMv8),由浅入深讲解32位和64位ARM CPU。
本课程既可以顺序学习整体提升你对arm cpu的理解,也可以针对具体问题学习具体章节。每章都有大小作业,可以在课程微信群讨论,多位arm专家长期驻群答疑。学习本ARM架构课程,近可以解决自己工作中遇到的ARM CPU具体问题,远可以触类旁通学习其它体系结构,为自己软件技术栈打下坚实的基础。
不需要任何ARM开发板,只需要一个可以运行Linux或docker的电脑,即可完成本课程所有实验和作业。
指导老师
张健_Bamvor
十年IT基础设施研发经验,其中6年Linux kernel一线研发经验,在suse,华为(17级),星际比特(技术合伙人)等公司工作。
作为团队核心成员参与了大陆第一个Cortex-A8 SOC芯片研发,负责CPU软件验证,操作系统移植等工作。
作为华为派驻到Linaro的技术专家,主导/参与多个Linux与arm架构相关特性研发(ILP32,continuous bit hint,kernel selftest等)
在拉斯维加斯,柏林,布达佩斯和北京多次发表技术演讲:
2014 Opensuse Asia Summit: openSUSE on ARM
2016 Linuxcon Europe: An efficient unit test and fuzz tools for kernel/libc porting
2016 Linaro Connect Las Vegas: LAS16-TR07: Working upstream [Mandarin]
2017 Linaro Connect Budapest: BUD17-305 - Implement contiguous page hint for anonymous page in user space. Slides
2018 Recent Kernel Update (Ubuntu Kylin18.04 meetup in Beijing). Slides
整体大纲
整体目标:突出arm架构内容,Linux本身的内容能不讲就不讲。
思路:从arm cpu架构入手,从arm指令集到内存管理到arm cpu,从单核到多核。
ARM architecture以Linux为例覆盖如下内容,目标是arm的问题知道去哪里查,PCB,SOC,ARM CPU还是ARM ARM:
Instruction set: 内核基本只用整数,浮点稍微提一下lazy restore;
Exeption model:重点是内核和用户空间,EL2和EL3不提;
memory;32和64的差异。
mmu
cache: PoU, PoC
Timer
GIC
Power on and reset: arm and SOC view.
coresight
debug
trace
mcu可以从与A系列差异入手,这部分需要加硬件调试器吧,顺别把arm coresight简单说下。
报名方法:
电脑浏览器访问yomocode.com(不支持手机访问),先点击网站右上角图标,微信扫码登录,然后在此链接报名:
http://www.yomocode.com/courses/6