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)地址重映射及中断向量表 ...
随机推荐
- 不输入密码执行sudo 命令
命令行执行的crontab 命令,但是需要包含sudo 才可以执行的命令,怎么办呢?见下: leo@leo-Ubuntu:/etc$ visudovisudo: /etc/sudoers: 权限不够v ...
- oracle重做日志文件硬盘坏掉解决方法
rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...
- Modularizing your graphQL schemas
转自: https://tomasalabes.me/blog/nodejs/graphql/2018/07/11/modularizing-graphql.html Modularizing you ...
- openresty redis all in one docker demo
一个简单的docker demo 集成openresty+ redis,可以实现基于redis的动态修改反向代理的处理 环境准备 docker-compose 文件 version: " ...
- hasura graphql-engine v1.0.0-alpha30 功能试用
hasura graphql-engine v1.0.0-alpha30 有好多新的功能的添加 环境准备 docker-compose 文件 version: '3.6' services: post ...
- bfprt
bfprt //找第k小的数 #include <iostream> #include <vector> #include <algorithm> using na ...
- python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套
二十八.函数进阶 1. "*" 和 "**" ① 在形参位置时 都是聚合的作用 *args 位置参数→元组 **kwargs 关键字参数→ ...
- 怎么控制contenteditable的输入
contenteditable是所有流浪器都支持的属性, 可以利用标签模拟文本域, 实现体验相当不错的内容跟着高度自动增高的体验, 但是也带来一些问题, 就是可以直接复制带有style样式的标签进去 ...
- 大数据离线分析平台 用户数据Etl
Etl目标 解析我们收集的日志数据,将解析后的数据保存到hbase中.这里选择hbase来存储数据的主要原因就是: hbase的宽表结构设计适合我们的这样多种数据格式的数据存储(不同event有不同 ...
- Linux rm命令详解
Linux rm命令 Linux rm命令用于删除一个文件或者目录 语法: rm [options] name... 参数解释: -f, --force 强制删除.忽略不存在的文件,不提示确认 -i ...