05 Kbuild
KbuildKbuild(Kernel Build...
04 内核移植及分析
...
08 进不去系统
进不去系统 在做BSP开发时,难免会因为设置了什么东西,导致启动参数之类的错误,而无法正常进入系统了,这个文档记录一下自己遇到的问题和解决方法 extlinux.conf错误这个问题出现在调试地平线板子的时候,因为修改错误了/boot/extlinux/extlinux.conf,导致开发板在uboot引导kernel的时候错误,只能进入initramfs 解决思路其实很简单,就是再启动内核前把/boot/extlinux/extlinux.conf改回去。但是这其实还是比较困难的,因为在uboot或者initramfs中是没有直接挂载Linux的/boot目录的,所以没法直接访问 解决办法: 首先得知道/boot在哪个分区 12345678910111213141516171819202122sunrise@ubuntu:/media$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSmmcblk0 179:0 0 59.6G 0 disk├─mmcblk0p1 179:1 0 1M...
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等,...
01 系统移植概述
系统移植概述 所谓Linux系统的移植,就是让Linux在自己的嵌入式板子上跑起来。但是不像STM32上移植个FreeRTOS那么简单,移植Linux还是挺复杂的,不仅包含了OS本身,还要移植bootloader和rootfs 为了让Linux系统能够运行,只需保证组成Linux最小系统的那些部分都被移植了就行了,具体地,包括以下几点(具体作用见另一个文档): BootLoader:常见的有U-Boot,本质上就是一个裸机程序,用于初始化一些外设,然后将Linux内核从Flash拷贝到DDR启动,内核启动后U-Boot就结束运行了。就相当于PC上的BIOS Linux内核:这里需要的不是Linux内核源码,而是编译好的内核镜像 根文件系统:一个目录,包含了Linux运行必备的一些文件和程序 只要移植了这3部分,那么一个基础的Linux系统就能跑起来了,而Ubuntu那些的Linux发行版也包含了这几部分,并进行了一定的扩充。 各种配置文件在编译移植完的uboot、内核、根文件系统时,大致流程都是: 1.加载适配此板子的默认(default)配置文件:make...
00 Windows需要进行的设置
Windows需要进行的设置网络设置虚拟机要通过桥接与PC的物理网卡相连,2者的IP得在一个网段 虚拟机设置VMWare和WSL2的Hyper V冲突了,必须关闭一个 12345# 关hyper-vbcdedit /set hypervisorlaunchtype off# 开hyper-vbcdedit /set hypervisorlaunchtype auto
02 开发板网络设置
开发板上网 如果开发板要连接外网,且开发板是通过网线和笔记本连接的话,需要设置一些东西才行! 虚拟机网卡设置关于开发板uboot如何才能ping通ubuntu和pc机_如何让开发板和pc相互ping通-CSDN博客 1.虚拟机里面如果没有网络图标了 12sudo nmcli network offsudo nmcli network on 2.虚拟机桥接模式的那个网口默认就是线缆已断开,硬件上必须要连网线才可以 开启电脑的网络共享开发板连接外网失败ping: bad address ‘www.baidu.com‘_ping bad address-CSDN博客 设置路由和DNS信息解决开发板ping不通外网的问题_开发板网口直连不通,但是连交换机能通-CSDN博客







