03 文件IO
文件IO Linux下,一切皆文件。这句话指的是,Linux系统中,将对所有输入/输出资源(文件、管道、Socket、硬件设备)的操作都抽象成了对文件的操作。所以学习文件I/O的相关API很重要 1.文件描述符在Linux系统中,使用open()系统调用打开一个I/O资源后,会返回一个非负整数,这个非负整数就是==文件描述符==fd。后续所有的对于该资源的操作,都需要这个文件描述符。 这里我使用I/O资源而不是文件,因为打开像socket这样的资源时,并不是真的打开了一个文件,但是也会返回一个文件描述符。 Linux内核中,对每一个进程都维护一个打开文件表(struct...
09 删掉某个可执行文件相关依赖
删掉某个可执行文件相关依赖我们在用apt-get装了某个可执行文件/库之后,可能又想删掉它,可能第一时间想到的方式是用rm *的方式删,但是这样容易删不干净。既然文件是由apt-get安装的,拿再由包管理工具删掉就好了 寻找待卸载文件属于哪个包 以qemu-system-riscv64为例 法1:检查系统中通过 apt 安装的 QEMU 相关包 1apt list --installed | grep qemu 法2:查看具体包名 1dpkg -S /usr/bin/qemu-system-riscv64 卸载包12sudo apt-get remove qemu-system-riscv # 保留配置文件sudo apt-get purge qemu-system-riscv # 彻底删除(推荐)
19 有线以太网
有线以太网(Ethernet) Etheret这个词一般指的就是有线以太网,若涉及无线网络,通常会使用Wi-Fi或其他明确术语 嵌入式网络概述之前总是听到“网卡”这个词,实际上他是个非常笼统的概念包含了多个硬件。实际上需要以下的具体硬件来实现Ethernet: MAC控制器:它负责OSI体系中数据链路层的工作(以太网帧的封装、差错与流量控制、MAC地址寻址…) MAC可能位于SoC的内部,也可能外接。如果说一个SoC具备网络功能,一般指的SoC内部有MAC外设 PHY(物理层收发器)芯片:它负责OSI体系中物理层的工作: PHY一般位于SoC外部 信号转换:MAC层的数字信号 <—->...
07 TrustZone
TrustZone概述ARM TrustZone技术是所有Cortex-A系列CPU的基本功能,是通过ARM的安全扩展引入的。TrustZone从硬件层面提供安全机制,将CPU的工作状态分为Normal World(非安全世界)和Secure World(安全世界),涉及到安全相关的操作比如指纹、密码等都要在安全世界中进行,其他操作在非安全世界中运行 系统架构ARM提供了一套TrustZone技术的开源解决方案TF-A,他是一套底层固件,由于不同芯片原厂的SoC各不相同,芯片原厂一般会基于这个开源的TF-A针对自己的芯片再做一些修改,我们直接用芯片原厂修改好的就行了 前面提到了启用了ARM TrustZone后,CPU被分为2个世界,而这2个世界交互的桥梁就是ARM Trusted...
00 开发板启动方式选择
开发板启动流程Linux(Cortex A系列)芯片和STM32不一样,除了能从内部Flash启动,还可以从其他多种外部介质中启动,比如SD卡,EMMC,NAND Flash等。 芯片的启动可以分为启动方式选择、启动设备选择2个问题 启动方式以I.MAX6ULL为例,它的启动方式有4种,具体选择哪种由芯片上特定的引脚BOOT_MODE0和1决定,这点和STM32类似,STM32芯片上也有BOOT0和BOOT1这样的引脚。 通常只使用方式2和3,绝对不能使用方式1 不管是哪种方式,都依赖SoC内部的BOOT ROM 串行下载首先运行BOOT ROM中的代码,初始化基本外设,通过USB OTG或者串口的形式将代码下载到板子的DDR上,这个下载需要用NXP提供的软件MfgTool,一般用于设备最终量产时 内部BOOT模式首先运行BOOT ROM中的代码,初始化基本外设(比如SD卡这样的boot设备),再从对应的boot设备中将代码拷贝到指定的RAM(一般是DDR)中运行 Boot...
06 镜像烧写
镜像的烧写 之前一直用NFS+TFTP搭建开发环境,但实际生产环境不会用这种形式,会直接把镜像下载到存储介质中(SD/emmc…) 不同厂商的SoC烧录镜像所使用的工具,镜像的格式都不相同,所以这部分不是通用的,需要根据所用的平台来学习 我们在烧录时,不一定要把所有镜像(uboot、kernel、dtb、rootfs)都打包在一起再下载,可以分别下载各个部分 NXP平台NXP平台主要有2中方式,分别是针对USB烧录和SD卡烧录: USB烧录 MFGTool工具是NXP官方推荐的一个使用USB OTG来升级镜像的软件工具,它是NXP针对i.MX系列处理器专门使用的烧录工具,可以用来升级linux, 单独烧录某一系统分区,独立地烧录spi flash、 nor flash、sd card、nand flash,emmc等,...
002 源码编译
...
00 README
看了涛神和仲一的八股文文档,我觉得复习八股可以从以下几个方面开展: C/C++语法计算机网络 TCP/IP协议栈 TCP协议 UDP协议 MQTT协议 HTTP协议 编译/调试 GNU工具链的组成 ELF文件格式 交叉编译器 命名 命令行(-O -nostdlib…) 编译的全流程 内存分区及决定因素 gdb的使用 Core...







