没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
课程内容 :
1. 怎么移植一个系统到开发板,怎么编译系统内核、怎么制作设备树文件、怎么制
作文件系统
2. 制作bootloader(u_boot为例)
必须掌握以上的这些工程方法
PC 和 嵌入式设备系统启动比较
PC机启动过程
1. BIOS (Basic Inpu Output System) ( 硬件初始化 : 系统时钟,内存
(SDRAM/DDR2/DDR3/DDR4),启动方式:USB 硬盘 光驱 ...)
2. 引导程序 (grub,lilo,...) =>加载操作系统
3. OS (windows,Linux,Mac os)
4. 挂载文件系统 ( NTFS, FAT(16/32), EXT(2,3,4) )
5. 应用程序
嵌入式设备(exynos4412)
1. iROM固化代码
基本硬件初始化
判别启动方式---(SD/USB/EMMC)
读取存储介质一部分数据到 iRAM
2. iRAM代码运行bootloader第一阶段
初始化系统时钟
初始化内存
自搬移bootloader到内存
3. 内存中运行bootloader第二阶段
初始化基本的硬件设备 (串口,EMMC,SD)
加载OS到内存
4. 内存中运行操作系统 (Linux,windows CE,Mac OS)
5. 挂载文件系统
6. 运行应用程序
bootloader = BIOS + 引导程序
Item Description
iROM internal Read-Only Memory --- 掉电后数据保留
iRAM internal Random-Access Memory --- 掉电后数据丢失
LPDDR
Low-Power Double Data Rate (SDRAM ---- Synchronous
Dynamic Random-Access Memory)
eMMC Embedded Multi Media Card
开发环境
硬件:fs4412开发板 --- Samsung Exynos芯片
PC机环境:Ubuntu 16.04
交叉开发概念:
在PC机完成代码的编写和编译,在开发板运行编译完成的程序
Linux 环境配置
在 Linux 上添加交叉开发工具链
方式一:在当前终端添加环境变量
方式二:添加环境变量到配置文件 (选择这种)
/home/linux (用户名)/.bashrc ----- (针对当前登录用户)
/etc/bash.bashrc ---- (所有用户有效) (选这个)
export PATH=$PATH:TOOL_CHAIN
# TOOL_CHAIN 是交叉开发工具链的绝对路径
# 这种方式仅对当前终端有效
sudo vi /etc/bash.bashrc
# 在文件末尾添加
TOOL_CHAIN=/home/linux/fs4412/toolchain/gcc-4.6.4/bin
export PATH=$PATH:$TOOL_CHAIN
# TOOL_CHAIN 根据自己工具链文件的绝对路径,每个人不一样
如果是64bit 的Ubuntu系统,需要安装32bit运行库:
Linux 服务配置
配置tftp服务 (文件传输)
1. 安装软件包:
2. 修改默认配置文件 /etc/default/tftp-hpa
3. 重启tftp 服务
4. 测试:
配置nfs (network file system)服务
1. 安装软件包:
2. 修改默认配置文件 /etc/exports
sudo apt install lib32ncurses5
sudo apt install lib32z1
sudo apt-get install tftp-hpa (客户端程序)
sudo apt-get install tftpd-hpa (服务端程序)
sudo vi /etc/default/tftp-hpa
# 修改 TFTP_DIRECTORY="自己的tftpboot路径"
sudo /etc/init.d/tftpd-hpa restart
# 或者
sudo service tftpd-hpa restart
tftp 127.0.0.1 (server IP)
tftp> get (下载文件)
tftp> quit
sudo apt-get install nfs-kernel-server
3. 重新启动nfs服务
4. 测试:
开发板环境配置
u_boot 常用命令
1. 设置开发板ip地址
2. 设置tftp 服务器的ip地址
3. 开发板和Ubuntu之间进行网络通信 (板子 Ping Ubuntu)
sudo vi /etc/exports
# 添加自己电脑上需要共享的目录路径
/home/linux/fs4412/rootfs *(rw,sync,no_root_squash)
# *前面有空格,*后面部分代表目录的权限设置
# rw : 读写权限
# sync : 文件同步
# no_root_squash : 不对root用户进行权限压缩
sudo /etc/init.d/nfs-kernel-server restart
# 或者
sudo service nfs-kernel-server restart
sudo mount IP:共享路径 自己的挂载点目录
# e.g.
sudo mount 127.0.0.1:/home/linux/fs4412/rootfs ./nfs
# ./nfs (自己电脑上当前目录下的nfs子目录)
sudo umount ./nfs
# 撤销对nfs目录的挂载
setenv ipaddr [ip]
print 查看板子环境信息
save 记得保存
setenv serverip [server IP]
<1>板子IP地址和Ubuntu的IP地址的网络号一样
<2>虚拟机桥接模式
<3>无线网卡禁用
<4>防火墙关闭
4. 用tftp服务,下载Linux 系统、设备树(硬件信息)、文件系统 到开发板上
5. 启动内存
挂载文件系统
网络方式加载Linux内核(开发阶段)
1. 查看已经设置的参数:
2. 设置tftp 服务器端 ip 地址:
3. 设置开发班开启后自动执行的命令:
bootm 41000000 - 42000000 : 分别代表 Linux系统地址、文件系统地址
(“-”:表示不在本地内存地址加载)、设备树地址
4. 告诉操作系统系统启动后,挂载文件系统的方式 (网络方式挂载)
tftp 41000000 uImage
tftp 42000000 exynos4412-fs4412.dtb
tftp 43000000 ramdisk.img
bootm 内核在内存地址 ramdisk在内存地址 设备树在内存地址
bootm 41000000 43000000 42000000
print
setenv serverip 192.168.154.178
setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-
fs4412.dtb\;bootm 41000000 - 42000000
setenv bootargs root=/dev/nfs
nfsroot=192.168.154.178:/home/linux/03.fs4412/rootfs,proto=tcp
,nfsvers=3,nolock rw console=ttySAC2,115200 init=/linuxrc
ip=192.168.154.126
剩余22页未读,继续阅读
小菜鸟July
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0