码迷,mamicode.com
首页 > 其他好文 > 详细

ARM学习 之 如何在向内核写入系统调用

时间:2016-08-23 23:26:14      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

本文主要介绍两个例子: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学习 之 如何在向内核写入系统调用

标签:

原文地址:http://www.cnblogs.com/Bro-Young/p/5801087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!