ARM学习 之 如何在向内核写入系统调用
本文主要介绍两个例子:1-系统调用打印“hello kernel” 2-驱动开发板的蜂鸣器
使用的是友善之臂(Friendly ARM)的开发板,三星2440
========================================================================================
1. 进入linux-2.6.32.2 目录,新建mysyscall 文件夹,并进入。然后新建.c 文件
2. myadd.c 文件的内容
3. 新建, vi Kconfig 内容如下:
4. vi makefile
5. $ cd ..
$ vi Kconfig
6. $ vi makefile
7. $ cd ..
$ vi arch/arm/include/asm/unistd.h
8. $ vi arch/arm/kernel/calls.S
9. $ make menuconfig (必须在~/sq1600/linux-2.6.32.2 目录下)
10. 回车进入my sys call ---> ,空格选择 *
之后选择<Exit>退出并保存
11. $ cat .config|grep CONFIG_MY_SYSCALL - (会有CONFIG_MY_SYSCALL=出现,则正确)
$ make zImage - 编译
=====================================================
xcx@xcx-vm:~/sq1600/linux-2.6.32.2$ ls drivers/mysyscall/
built-in.o Kconfig Makefile myadd.c myadd.o
=====================================================
12. $ cp arch/arm/boot/zImage /tftpboot - 复制到tftp的目录下
13. 进入开发板的【u-boot】,依次执行如下命令:
ping 192.168.0.1 - 网络是否通畅
tftp 0x30008000 zImage -- 拷贝到开发板
nand erase 0x60000 0x500000 -- 擦除缓存区内容
nand write 0x30008000 0x60000 0x500000 -- 写入内容
14. 进入目录~/sq1600/07/1_syscall的目录下
新建test_syscall.c 文件输入如下内容:
// 以下是控制蜂鸣器的 新建test_buzzer.c 文件输入如下内容:
15. xcx@xcx-vm:~/sq1600/07/1_syscall$ arm-linux-gcc test_syscall.c -o test_syscall
xcx@xcx-vm:~/sq1600/07/1_syscall$ cp test_syscall /tftpboot/
16. 重启开发板,
进入开发板的/home/plg目录下
[root@FriendlyARM plg]#
[root@FriendlyARM plg]# ifconfig eth0 192.168.0.230 - 设置开发板ip地址
[root@FriendlyARM plg]# ping 192.168.0.1 - 查看网络是否通
[root@FriendlyARM plg]# ping 192.168.0.1
=================================================
PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: seq=0 ttl=64 time=2.797 ms
64 bytes from 192.168.0.1: seq=1 ttl=64 time=0.775 ms
^C
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.775/1.786/2.797 ms
==================================================
结果如上,表示网络通畅
17. [root@FriendlyARM plg]# tftp -r test_syscall -g 192.168.0.1
[root@FriendlyARM plg]# ./test_syscall
ARM学习 之 如何在向内核写入系统调用的更多相关文章
- arm学习笔记
学习ARM也有一定时间了,想想还是记点东西,要不以后就忘了.这是我的第一片,简简单单.但比较基础.1. ARM中一些常见英文缩写解释MSB:最高有效位:LSB:最低有效位:AHB:先进的高性能总线:V ...
- Linux操作系统学习_用户态与内核态之切换过程
因为操作系统的很多操作会消耗系统的物理资源,例如创建一个新进程时,要做很多底层的细致工作,如分配物理内存,从父进程拷贝相关信息,拷贝设置页目录.页表等,这些操作显然不能随便让任何程序都可以做,于是就产 ...
- 深入理解Linux内核-系统调用
系统调用:用户态进程向内核发出的,实现用户态进程调用硬件设备的函数或者中断:优点:使编程更容易,将用户从学习硬件设备的低级编程特性中解放:提高系统到安全性,内核在满足请求之前可以做正确性检查:提高可移 ...
- linux内核增加系统调用--Beginner‘s guide
Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. ...
- linux内核增加系统调用--Beginner's guide
Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. ...
- ARM学习篇 中断定时理解
1. 中断控制器 a. 中断处理流程 P1--摘自S3C2440A手册 P1简要阐述了S3C2440A内置中断控制器处理中断的流程: ●若某中断有自中断,则先接收子中断请求,否则,直接接受源中断. ...
- 2015-10-11 Sunday 晴 ARM学习
基础的知识看得差不多了,linux系统相关的,最主要是c语言基础知道,还有linux系统编程,网络编程socket等相关的.这些内容最最基础的看完了,接下来我在考虑看什么呢?是看ARM以及驱动编程系列 ...
- ARM学习日记
2012-05-15 1.ARM开发板环境的搭建,nor启动,通过suppervivi,下载vivi---下载Kernel----下载文件系统,然后Nandflash启动即可. 2.在/etc/ini ...
- 《转》我的ARM学习经历
1.基础阶段 话说06年第一份工作从事的是PLC开发,用protel画原理图和PCB,写AVR单片机程序,焊焊板子,还去过华强北买器件,比较杂,但是接触面比较广,为进一步学ARM打下了基础. ...
随机推荐
- ButterKnife 8.2.1 大圣归来
零.前言 ButterKnife是一个视图注入的框架,主要帮我们解决无脑的findViewById.设置监听事件等等体力劳动. 一.引入 好消息是ButterKnife终于使用apt生成代码了,首先在 ...
- Ignite用户配置管理介绍
Ignite8这款数据库性能监控.性能分析软件,不光是DBA监控.管理数据库的利器之一,开发人员也可以查看系统性能数据,下面介绍一下如何在Ignite里面配置用户权限,本文纯水文一篇,介绍简单基本的配 ...
- Java 流(Stream)、文件(File)和IO
Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序 ...
- MongoDB学习笔记~客户端命令行的使用
回到目录 当我们从MongoDB网站下载安装包之后,它会伴随有一系列的工具,服务器程序mongod是我们耳熟能详的了,客户端mongo和性能检测mongostat我们可能就没有用过了,今天主要是介绍一 ...
- 测试几个xml的问题
使用sql server的时候,免不了与xml的参数打交道,xml大多数时候都给我们的程序带来方便,但是也有些时候会有变量赋值不通过的时候.(当然罗,如果你本身xml都通不过 xml spy 之类软件 ...
- hbase伪分布式平台搭建(centos 6.3)
搭建完<hadoop伪分布式平台>后就开始搭建hbase伪分布式平台了.有了hadoop环境,搭建hbase就变得很容易了. 一.Hbase安装 1.从官网下载最新版本Hbase安装包1. ...
- linux下 mysql数据库的备份和还原
1.备份 [root@CentOS ~]# mysqldump -u root -p mysql > ~/mysql.sql #把数据库mysql备份到家目录下命名为mysql.sql Ente ...
- C# random helper class
项目中经常需要模拟些假数据,来做测试.这个随机生成数据的helper类就应用而生: using System; using System.Text; using System.Windows.Me ...
- HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出 ...
- 关于selenium的CI、框架……
这段时间除了项目测试外,主要在做web自动化的事情,大致总结一下吧,总体的设计模式pageobject+pagefactory+testng的数据驱动,项目用maven来构建,使用jenkins集成, ...