ARM Cortex-A9 (tiny 4412)
要求
移植linux增加系统调用并烧写至开发板
详细步骤
一、搭建linux编译环境
1、GCC 编译器的安装:
tar xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C/
arm-linux-gcc -v //查看GCC版本
2、gedit ~/.bashrc
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
3、reboot -p 重启
4、cp -f tiny4412_android_defconfig .config
make -->编译
5、安装libz.so
yum install zlib.i686
6、挂载红帽6.4iso镜像
mount -o loop rhel-server-6.4-x86_64-dvd.iso /mnt
yum install zlib.i686
编译 --> make
1)配置yum:
root@localhost 桌面]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
rhel-source.repo
[root@localhost yum.repos.d]# cp rhel-source.repo my.repo
gedit my.repo
[rhel-source]
name=rhel-source
baseurl=file:///mnt
enabled=1
gpgcheck=0
挂载红帽6.4镜像mount -o loop rhel-server-6.4-x86_64-dvd.iso /mnt
yum install zlib.i686 (for libz.so ,when build linux)
yum install minicom*
yum install ncurses*.i686 (for libncurses.so, when install adb)
yum install libstdc++.i686 (for libstdc++.so,when build android)
2)minicom串口通信工具的安装:
arm-linux-gcc交叉编译环境搭建:
FriendlyARM/tiny4412
yum install minicom*
cd /usr/bin ls /dev/ttyu*
minicom -s 修改默认设备名为ttyUSB0 硬件设备控制关掉 SAVE
开着minicom, 开关板子会出现log
烧写SD启动卡:
(1)、红帽6.4系统下插入事先准备好的SD卡;
查看SD卡设备信息,确定设备别名(重要!不可弄错) :
查看SD卡信息 fdisk -l
Ls sd /dev/sd* -ll //此处SD卡设备名为sdb
(2)、对SD 卡进行分区 ;
先删除SD卡所有分区:
Fdisk /dev/sdb
命令选项
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
d 删除所有分区
(3)、p 新建1个主分区
分区前需留100M给Supperboot
公式:
SD卡内存*1024M:内存柱数=100M:起始柱面数
如图2 所示32G SD卡总柱面为19165,套用以上公式计算起始柱面为58;
(4)、修改分区的system id 选择 t
(5)、选择分区类型
l -类型清单
b -在此只能选择FAT32格式
(6)、输入w保存退出
(7)、格式化分区
mkfs.vfat /dev/sdb
(8)、烧写boot程序
sync 执行一下同步命令
(9)、把 image 复制到SD卡中 SD启动卡即制作完成
将SD卡插到板子上进行烧机
二、 搭建NFS文件系统环境
1、 安装minicom
配置yum安装源并安装 yum install minicom
2、 配置PC 端NFS服务
1)关闭PC端防火墙 setup
保存退出
临时关闭 iptables service iptables stop
关闭selinux setenforce 0
查看selinux并修改SELINUX =disabled
gedit /etc/selinux/config
2)写NFS配置文件
gedit /etc/exports
/uplookingroot *(rw,sync,no_root_squash)
3)在PC上建立目录 /uplookingroot
用网线连接PC和板子
重启PC reboot -p
4)启动NFS服务 service nfs restart
5)配置IP地址 ifconfig eth0 192.168.1.10 up
测试PC 板子之间的连接 ping 192.168.1.20
6)进入板子 minicom .....
7)挂载目录
mount -t nfs -o nolock,rw 192.168.1.10:/uplookingroot /mnt
8)PC端在/uplookingroot 内编写要传输的文件 minicom端口可见
板子下:cd /mnt
[root@localhost mnt]# ls //可见文件 Hello.c
dnw工具的安装:
tar xzvf dnw-linux.tar.gz
cd dnw-linux/
make
退出挂载 umount /mnt
三、 修改linux内核,增加新的系统调用
1、 解压编译linux源代码,测试当前源代码是否可执行
[root@localhost / ]# tar xzvf linux-3.5-20150121.tgz
cp tiny 4412_linux_defconfig .config
make -j4
ls arch/arm/boot/zImage -ll
2、将zImage拷贝到网络启动的SD卡刷机 //SD卡刷机见一
1)SD卡使用Superboot
[root@localhost install]# ./write4412boot Superboot4412.bin /dev/sdc
start ...........
end .....……
2)同步 sync
3)nfs 环境 //参考二
3、修改linux3.5源码增加系统调用
1) 修改calls.S
[root@localhost linux-3.5]# gedit arch/arm/kernel/calls.S
/* 378 */ CALL(sys_add)
2)gedit /linux-3.5/arch/arm/include/asm/unistd.h
©#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377)
©#define __NR_add (__NR_SYSCALL_BASE+378)
3)
gedit /linux-3.5/arch/arm/kernel/sys_arm.c
asmlinkage long sys_add(int a, int b){
return (a + b);
}
4)编译
[root@localhost linux-3.5]# make
4、将新的zImage拷贝到网络启动的SD卡刷机
5、 做一个动态库
cd /home/material/code/code_driver/02syscall/01user_so
[root@localhost 01user_so]# ls
add.c add.h test.c
编译
[root@localhost 01user_so]# arm-linux-gcc -shared -fpic add.c -o libadd.so
[root@localhost 01user_so]# ls
add.c add.h libadd.so test.c
6、生成测试程序
[root@localhost 01user_so]# arm-linux-gcc test.c -o test -L./ -ladd
[root@localhost 01user_so]# ls
add.c add.h libadd.so test test.c
7、 将libadd.so 和 test 下载到开发板
[root@localhost 01user_so]# cp -f libadd.so /uplookingroot/.
[root@localhost 01user_so]# cp -f test /uplookingroot/.
8、进入板子
挂载共享目录
[roorplooking /mount -t nfs -o nolock,rw 192.168.1.10:/uplookingroot /mnt
将libadd.so 拷贝到/lib
[roorplooking /cd /mnt
[roorplooking /mnt cp libadd.so /lib/.
测试
[roorplooking /mnt./test
c =
4
四、写应用程序测试系统
由于Supperboot不能支持我们自己修改的内核,重新编译内核
tar -xvf linux-3.5-20150121.tgz -C /root
cd linux-3.5
cp tiny4412_linux_defconfig .config
make -j4
构建刷机sd卡: //由于前面已经给sd分过区,在此省略分区操作
images拷贝到sd卡 把sd卡插入PC
cp /arch/arm/boot/zImage Linux/zImage
vim FriendlyARM.ini
OS=Linux
把sd卡插入开发板进行刷机
将开发板与PC进行连接
minicom
开发板开机
配置PC ip ifconfig etho 192.168.1.10
ping 192.168.1.20 测试PC与板子的通讯
挂载共享目录
[roorplooking /mount -t nfs -o nolock,rw 192.168.1.10:/uplookingroot /mnt
将新的zImage拷贝到网络启动的SD卡刷机
编译
[root@localhost 01user_so]# arm-linux-gcc -shared -fpic add.c -o libadd.so
[root@localhost 01user_so]# ls
add.c add.h libadd.so test.c
生成测试程序
[root@localhost 01user_so]# arm-linux-gcc test.c -o test -L./ -ladd
[root@localhost 01user_so]# ls
add.c add.h libadd.so test test.c
将libadd.so 和 test 下载到开发板
[root@localhost 01user_so]# cp -f libadd.so /uplookingroot/.
[root@localhost 01user_so]# cp -f test /uplookingroot/.
将libadd.so 拷贝到/lib
[roorplooking /cd /mnt
[roorplooking /mnt cp libadd.so /lib/.
测试
[roorplooking /mnt./test
c =
4
效果
ARM Cortex-A9 (tiny 4412)的更多相关文章
- swddude -- A SWD programmer for ARM Cortex microcontrollers.
Introducing swddude I love the ARM Cortex-M series of microcontrollers. The sheer computational po ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...
- 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据
灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...
- 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置
灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...
- 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯
灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...
- ARM Cortex M3系列GPIO口介绍(工作方式探讨)
一.Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图 从图中可以看出 ...
- ARM Cortex M3(V7-M架构)硬件启动程序 二
解析 STM32 的启动过程 解析STM32的启动过程 当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main ...
- ARM Cortex M3(V7-M架构)硬件启动程序 一
Cortex-m3启动代码分析笔记 启动代码文件名是STM32F10X.S,它的作用先总结下,然后再分析. 启动代码作用一般是: 1)堆和栈的初始化: 2)中断向量表定义: 3)地址重映射及中断向量表 ...
随机推荐
- RN中移动组件开发
在原生的开发中,如果要自定义一些控件,可能会用到touch的相关方法,而React Native也有一套touch机制,说白了就是用JS写了一套方法打通android和ios平台,这里简单讲解下Rea ...
- itcast-spring-三大框架整合
三大框架架构(整合原理) struts整合到spring hibernate整合到spring 导包 eclipse需要导入 myeclipse不用 单独配置spring容器 单独配置stru ...
- mongodb千万级写入怎么优化
从mysql数据库通过java程序导入单表1300w到mongodb,花了大概50分钟,前1000w条数据中每100w条大概要3分钟,之后的300多w条就差不多每100w条要5到6分钟,之后再从其他的 ...
- ClusterControl docker 环境搭建
ClusterControl 是一款比较强大的数据库管理平台,包含了丰富的数据库管理功能. 我们可以用来方便的进行数据管理 测试使用docker-compose 管理 环境准备 docker-comp ...
- RTSP为什么VLC播放器无法播放
rtsp_tracepoint: rtspservice.c,RTSP_state_machine, state_machine:current state is ready state curren ...
- openstack--5--控制节点和计算节点安装配置nova
Nova相关介绍 目前的Nova主要由API,Compute,Conductor,Scheduler组成 Compute:用来交互并管理虚拟机的生命周期: Scheduler:从可用池中根据各种策略选 ...
- ML(5)——神经网络1(神经元模型与激活函数)
上一章介绍了使用逻辑回归处理分类问题.尽管逻辑回归是个非常好用的模型,但是在处理非线性问题时仍然显得力不从心,下图就是一个例子: 线性模型已经无法很好地拟合上面的样本,所以选择了更复杂的模型,得到了复 ...
- GoJS 在 vue 项目中的使用
GoJS 在 html vue 项目中的使用,github地址:https://github.com/cag2050/gojs_demo GoJS 在 vue-cli 2.x 项目中的使用,githu ...
- 配置hive元数据数据库
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <v ...
- nginx的url规则小tips
背景信息: 被代理的服务器(10.90.7.2)上,nginx的配置内容 server { listen ; server_name localhost; default_type text/html ...