驱动---ARM系统移植

linux移植:

1.移植一个linux到ARM上

2.ubuntu上开发应用程序(交叉编译) --- 在A平台上开发编译B平台运行的程序

3.移植应用程序到ARM上 nfs --- 网络文件系统

网络配置:
ubuntu有线连接开发板

1.设置 网络适配器更改为桥接

2.编辑 虚拟网络编辑器Vmnet0桥接到有线网卡

3.修改网络配置文件 sudo vim /etc/network/interfaces

4.重启虚拟机/或网络服务

auto ens33

iface ens33 inet static

address 192.168.1.3

netmask 255.255.255.0

gateway 192.168.1.1

ubuntu有线连接开发板

1.设置 网络适配器更改为NET

2.编辑 虚拟网络编辑器Vmnet0桥接到无线网卡

3.修改网络配置文件 sudo vim /etc/network/interfaces

4.重启虚拟机/或网络服务

auto ens33

iface ens33 inet dhcp

address 192.168.1.3

netmask 255.255.255.0

gateway 192.168.1.1

nfs挂载命令:

开发板端执行 mount -o nolock,nfsvers=3 192.168.1.3:/home/linux/nfs /mnt

注:要使用和平台匹配的编译器编译程序,不匹配则程序不能执行

Linux启动流程:

1.bootloader 是一个为内核启动准备环境的裸机程序,引导内核启动

2.kernel 操作系统的核心(实现整个系统功能的程序)

3.rootfs 加载(挂载)跟文件系统 所有文件的集合 /

1.bootloader(uboot)

---初始化异常向量表

---初始化CPU(工作模式)

---初始化堆

---初始化时钟

---关看门狗

---关闭Cache(数据Cache必关,指令可选)

---关MMU

---关中断

---初始化内存

---初始化相关设备(串口网口)

---集成相关协议

---搬移内核到内存 --- 向内核传参(根文件系统类型,init进程,控制台)

---引导内核启动

---bootload不在控制CPU,CPU控制权移交给内核

2.kernel一个复杂的程序

文件管理 进程管理 内存管理 网络管理 设备管理 IPC进程间通信

内核启动到最后阶段 加载(挂载)根文件系统

启动 init 进程(由内核init进程退化(exec))

init -> 其他进程 -> shell -> userapp

3.rootfs 跟文件系统(第一个挂载的文件系统)

一堆文件的集合

---配置文件

---系统命令

---库

---用户程序

---普通文件(文本、mp3、jpg)

系统上电根据启动模式配置引脚从不同的介质加载bootloader(以SD卡为例)

1.CPU拷贝bootloader前半部分到OCRAM,bootloader在前半部分代码中初始化好内存,并搬移自己后半部分到内存中执行,bootloader执行到最后阶段搬移内核到内存,并引导内核启动

2-1.内核在SD卡中,则bootloader需要在代码中初始化好SD卡,然后读SD的kernel块写入内存

2-2.内核在ubuntu上,则bootloader需要在代码中初始化有线网卡及集成tftp协议,通过tftp协议下载内核到内存

3-1.根文件系统如果在SD卡上,则内核直接挂载SD卡的rootfs分区

3-2.根文件系统在ubuntu上,则内核应该通过nfs挂载ubuntu上的rootfs目录(bootloader向内核传参是应该包含内核启动阶段使用的IP)

相关推荐
Emtronix英创16 小时前
RK3568 CAN驱动测试及使用说明
linux·arm开发·rk3568·全国产主板
时空自由民.2 天前
Arm Coretex-M核MCU做IAP/OTA升级时候为什么要做中断向量表地址偏移?
arm开发·单片机·嵌入式硬件
黑猫学长呀2 天前
存储宝典第1篇:Nand SCA是什么
arm开发·arm·nand·存储芯片·nandflash·onfi
Freak嵌入式3 天前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
arm开发·人工智能·python·嵌入式硬件·机器人·嵌入式·micropython
振南的单片机世界3 天前
推挽输出:上管推、下管拉,驱动强但不“合群”
arm开发·stm32·单片机·嵌入式硬件
沃普天科技4 天前
USB显示器多屏异显多屏拼接IF8032 IT690 VL171 8801 RTD2556
arm开发·驱动开发·算法·计算机外设·音视频·硬件工程·pcb工艺
凉、介4 天前
ARM GICv3 学习笔记(一)
arm开发·笔记·学习·嵌入式
jake·tang4 天前
深度解析 VESC 参数辨识源码:电阻、电感与磁链
arm开发·c++·嵌入式硬件·算法·数学建模·傅立叶分析
星恒讯工业路由器4 天前
星恒讯4G工业级无线数传模组选型指南:接口、环境适配与典型应用场景
arm开发·嵌入式·无线通信·4g模组
代钦塔拉5 天前
CPU架构篇:Intel、AMD与x86、x64、ARM全解析
arm开发·架构