嵌入式系统介绍
·
嵌入式系统:
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适应应用系统对功能,可靠性,成本, 体积及功耗严格要求的专用计算机系统.
嵌入式系统的构成:
****硬件的构成:****
硬件最小系统:
处理器:
ARM
C51
MIPS
LA
POWERPC
Intel
.....
电源
复位电路
时钟电路
存储电路
掉电丢失的 RAM ---SRAM
---DRAM
掉电不丢失的存储器
ROM 只读存储器 掩膜项目
PROM , Programme (可编程的) 写入一次
EPROM,ERASE (可擦除的) 可以多次写入
E2PROM,电信号可擦除
FLASH
NORFLASH
NANDFLASH
EMMC
**软件的构成**
应用程序:
c语言
uc
QT
OS:
任务调度策略-----基于优先级 时间片轮转 先来先服务
linux --时间片轮转
ucos-II -- 基于优先级 (实时操作)
vxworks --基于优先级 (实时操作)
没有操作系统(裸板)
main () {
xxx_init ();
while (1){
......
};
}
自定义操作系统 (COS) --Card OS
**硬件驱动程序**
- 嵌入式软件的开发模式:
编辑 编译代码在PC机上进行
编译结果放到开发板上执行
HOST -------> TARGET
USB
RS232
Network Enthernet
JTAG
嵌入式软件开发难度:
1.C编程基本功
2.嵌入式开发环境的搭建
3.软硬件结合
a)能够看懂电路原理图
b)阅读芯片数据手册
c)接口: uart iic spi usb …
学习重点:
**一. ARM 体系结构与编程:**
LED
UART (串口)
加速度传感器 (I2C接口)
ARM中的中断处理过程
**二. 系统移植**
uboot 移植
linux内核移植
根文件系统的制作 (ls rm cd...)
**三.Linux下驱动程序的开发**
硬件的知识
内核编程的基础
内核驱动编程框架
字符设备框架
块设备框架 (sata)
网络设备框架(网卡)
四. 裸机开发环境的搭建
4.1 安装eclipse
确认自己的PC机的环境。
例如,在windows下安装:eclipse-kepler-for-arm-windows-x86_64.7z
4.2 解压eclipse安装包
将 eclipse-kepler-for-arm-windows-x86_32.7z 拷贝到
安装目录,如 D 盘并解压
4.3 启动eclipse
在解压的安装目录下,有 eclipse.bat 和
eclipse.exe 两个文件,双击 eclipse.bat 即可启动。
4.4 注意,第一次启动 eclipse 时,会提示我们选择
工作空间路径,这里我们设置为D:\workspace\x6818,
当然用户也可以设置到自己喜爱的路径。
4.5 建立第一个工程
第一步:双击 eclipse.bat,打开 eclipse
第二步:在 Project Explorer 的空白栏右键单击
->New->C Project,弹出新建项目的对话框:
在 Project name 中输入工程名称,这里我们命名为
LED,在 Use default location 前有一个勾,默认已经
勾选上,下面的 Location 一栏就是我们的工程目录。
由于前面我们已经将默认工作空间设置为 D:\
workspace,因此我们建立的工程路径为:
D:\workspace\LED。在 Project type 一栏中选择
Makefile project 下面的 Empty Project,Toolchains
不用管他,点击 Finish。
我们可以进入 D:\workspace\x6818\LED 目录,
这时里面只有两个文件:
这是 eclipse 自动生成。找到我们提供的第
一个裸机工程文件目录 x6818-led,复制里面
所有内容。
在 eclipse 的 Project Explorer 一栏,
右键点击工程 LED,选择 Paste,即将 LED 工程拷
贝过来了。
这里,include 目录是我们已经建好的基于 s5p6818 的一些头文件,用户可直接调用。
soure 目录为源代码文件,程序首先会从 start.S 文件
开始执行,这里面初始化了一系列 6818的寄存器,如
看门狗等。之后,会通过 bl main 语句跳到 main.c
中执行main 函数。
工程目录中 link.ld 为链接文件,Makefile
为编译源码需要用到的脚本文件,mk6818.exe
用于计算校验和,没有这个文件,我们后面生成的映
像,下载到 SD 卡后就没法运行了。
注意我给你的源代码中,在 tools/windows 下面的
可能没有 mk6818.exe。如果没有请将
x6818.exe 重命名为 mk6818.exe。
重命名的方法右键点击 x6818.exe 就可以看到
重命名的选项了。这一步很重要,请记住。
4.6 编译源码
右击 Project Explorer 栏的工程名称 x6818-led,
选择 Build Project
编译完成后,在工程目录下会生成 output 目录
图中 x-ledpak.bin 即是我们最终需要的映像文件。
注意千万别使用 x-led.bin,该文件没有和
second boot 打包,不能直接使用。
4.7 下载源码到SD卡
针对 x6818 开发板,裸机开发我们几乎都是
将裸机程序直接烧写到 TF 卡运行。在WindowsXP
或是WIN7下,可以使用我们自主编写的烧写工具
x6818_Fusing_Tool.exe 烧写。
注意:下载到 TF 卡时,首先我们需要给 TF 卡分区。
从光盘中找到 PartitionManager.exe工具并打开,
界面如下。
上图中H盘即为我们插入的 TF卡分区。
我们需要使用这个工具给 TF卡预留一些空间,用于
存放 bootloader 或裸机程序。首先我们右键点击最下面
图标的可移动磁盘(H:),点击删除分区,勾上下次不再
询问,点击是,即删除了原来的分区。这时,TF 卡就
只剩一个分区了。
再次右键点击该分区,点击创建分区
在请指定分区前面的自由空间大小一栏中填入我们
需要预留的空间,我们这里填 100M,留给 bootloader
或裸机已经足够用了。在请为新分区选择文件系统中选
择 FAT32,点击是,然后再到主界面快捷菜单栏点击应
用即可。
双击 x6818_Fusing_Tool.exe,将不小于 2GB 的 TF
卡通过读卡器插到 PC 机。
点击 Browse,找到我们刚生成的 x6818-led.bin 文件,
点击 Add,映像会添加到下面的路径中,这样下次如果
不更改路径,就不用再指定路径了。
点击 START,开始烧写
五 烧写开发板的实验
擦除emmc :
mmc erase 0 1000
0, 起始块编号
1000, 连续操作的块数
要烧写的软件:ubootpak.bin
5.1 将ubootpak.bin 烧写到TF卡中
1)格式化TF卡
将读卡器插入PC,右键格式化--》快速格式化
2)将ubootpak.bin 写入TF卡 (扇区)
IROM_Fusing_Tool.exe
右键,以管理员身份运行
点击Broswse,选择env/ubootpak.bin,点击Add,点击START即可
5.2 将烧写完毕的TF卡插入开发板SD0插槽
5.3 复位开发板 观察实验现象
windows 串口工具安装
在env/tools/SecureCRT, 解压缩之后,在解压缩的目录下,
找到名字相同的.exe文件,双击安装即可。
1.安装之后,先将comxx给删除,然后点击快速连接的按钮。
2. 协议改为 Serial
3. 端口改为连接到pc上的com口
4. 数据位选择8位
5. 奇偶校验选择None
6. 停止位选择1位
7. 流控不选
设置好之后,按下连接,之后按下板子的复位键,
观察SecureCRT中的输出信息,只要有任何信息输出即可。
常用服务搭建:
tftp 服务搭建:
yum install tftp tftp-server
yum install xinted
修改配置文件:
/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/tftpboot/
disable = no
per_source =11
cps = 100 2
flags = IPv4
}
测试: /var/tftpboot 下创建文件 test
tftp 10.40.23.131
get test
退出之后,查看本目录下是否有文件.
架设tftp服务器
tftp它是ftp协议的简化版本,没有用户管理功能
安装:
联网,sudo apt-get install tftpd
//未联网,cd /home/tarena/Downloads/tftp
//sudo dpkg -i *.deb
配置 sudo vi /etc/default/tftpd-hpa
#tftp server家目录
TFTP_DIRECTORY="/tftpboot"
如果修改了配置文件,需要重启tftp server使新配置生效
sudo /etc/init.d/tftpd-hpa restart
准备共享文件
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot/ -R
在虚拟机中点击“虚拟机” ---》 设置---》 选项
---》 共享文件夹 --》 总是启用 ---》 添加 ---》 下一步
---》 浏览 ---》 选择windows下的env 目录 ---》 启用此共享
---》 完成 ---》 确定即可
cp /mnt/hgfs/arm/env/ubootpak.bin /tftpboot
保证客户端(开发板)能够ping通服务器(ubuntu)
如果是纯系统:
1) 保证开发板ubuntu处于同一网段
如果是vmware + ubuntu
1) 保证开发板 ubuntu windows 三者处于同一网段
2) ubuntu : 192.168.1.8 255.255.255.0 192.168.1.1
开发板: 192.168.1.6
printenv
setenv ipaddr 192.168.1.6
setenv serverip 192.168.1.8
saveenv
windows: 192.168.1.111
注意: 改成连接开发板的网卡
2)设置为桥接模式
虚拟机---》 设置 ---》 硬件 ---》 网络适配器 ---》 桥接模式
3) 设置要桥接的网卡
编辑 ---》 虚拟网络编辑器 ---》 选择桥接模式 --》 选择和pc上连接的网卡
验证:开发板ping ubuntu
将server 上的ubootpak.bin下载到开发板的内存中去
tftp 0x48000000 ubootpak.bin
tftp 命令
0x48000000,目标地址
ubootpak.bin,要下载的文件的名称
将ubootpak.bin烧写到emmc
update_mmc 2 2ndboot 0x48000000 0x200 532ec(下载多少,烧录多少)
安装交叉编译工具(器)
它是一套软件,该软件本身运行在PC
它能将C语言翻译成ARM处理器认识的机器指令
sudo chmod 777 /opt
cd /opt/
//cp /mnt/hgfs/env/tools/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/ ./ -rf
//tar xf arm-cortex_a9-eabi-4.7-eglibc-2.18.tar.gz
cp /mnt/hgfs/env/tools/toolchains.tar.gz /opt/
tar xf toolchains.tar.gz
vi ~/.bashrc
export PATH=$PATH:/opt/arm-eabi-4.8/bin
关闭窗口,重新打开窗口 该配置生效
或者
在当前窗口中执行 source ~/.bashrc
验证:显示版本号
arm-eabi-gcc -v
环境变量:
什么是环境变量?
环境变量是跟进程相关的,每一个进程都有自己的环境变量,进程可以通过环境变量去
查看或者访问相关资源
bash进程的环境变量
如何查看bash进程的环境变量:
env
SHELL=/bin/bash
格式:
name=value
如何获取指定环境变量的值?
$name
如何更改环境变量的值?
name=newvalue
注意: =的两边不允许出现空格
比如: GOPATH=BEIJING
环境变量的名字必须在环境变量列表中出现
自定义变量 ---> 环境变量列表中不存在的变量
caption=beijing
export caption
env | grep "caption"
PS1: bash的提示符 通过这个环境变量可以设置bash的提示符
PS1="\W\$" --> 让提示符只显示当前的目录
bash进程启动的时候, 会执行一个脚本程序 ~/.bashrc
vi ~/.bashrc
export PS1="\W\$"
PATH:
echo $PATH
PATH=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2021-03-25/bin/:
/opt/gcc-4.4.0-pmon/bin/:/opt/pmon2000-config/tools/
以:分隔的是多条路径
执行命令(ls)的时候,先在第一条路径下找,找不到继续在下一条路径下找
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)