• 2440的驱动的研究


     一 。 编译器 : 不同版本的编译器不一样,使用的时候得注意 ,不一定高版本的支持的功能就越多或者兼容的越多

     arm-linux-gcc-4.3.2.tar.bz2 用于编译u-boot2012.04.01和linux3.4.2

    arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2用于编译u-boot1.16和linux2.6.22.6
     
    二  、以下是模块的MAKEFILE文件
    KERN_DIR = /work/system/linux-2.6.22.6
    all:
     make -C $(KERN_DIR) M=`pwd` modules
    clean:
     make -C $(KERN_DIR) M=`pwd` modules clean
     rm -rf modules.order
    obj-m += buttons.o
        其中    KERN_DIR = /work/system/linux-2.6.22.6  是内核的路径
         注意 :1、这个内核是开发板的内核、
                     2、这个内核的路径在虚拟机的  /work/system/  ,是将开发板的内核源文件解压,配置编译后的文件,其中的uimage 可以下载进开发板
     
     
    三、驱动的程序的理解:
             1、init ,exit    这两个是加载程序和卸载程序,是在系统应用程序(调用该驱动的程序)运行之前进行操作的,因为驱动的使用套路基本是文件操作,在读写文件之前没有文件怎么可以。
             2、应用程序调用的时候驱动程序使用   open  close 等等操作驱动,所以驱动程序中有与之对应的程序
             3、在操作系统上编程,必须使用重映射,这也就是stm32不能运行linux的一个最大原因之一
             4、应用程序不能直接进入内核,所以不能直接操作驱动,只能通过copy_to_user 和 copy_from_user 这两个函数,只能出现在驱动中,因为驱动是主动方, 个人猜测 : 驱动可以接收应用程序传来的数据,也可以发送。但是当遇到错误的时候,驱动可以不搭理应用程序,保护自己。
     
            
                
                      
     
     
     
    要有韧性
  • 相关阅读:
    mac地址绑定
    解决php函数json_encode转换后中文被编码为unicode
    json格式转数组注意事项
    leetcode[93] Restore IP Addresses
    leetcode[92] Reverse Linked List II
    leetcode[91] Subsets II
    leetcode[90] Decode Ways
    leetcode[89] Merge Sorted Array
    leetcode[88] Gray Code
    leetcode[87] Partition List
  • 原文地址:https://www.cnblogs.com/niuxiaojie521/p/11119476.html
Copyright © 2020-2023  润新知