在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    
    
    <address id="vxupu"><td id="vxupu"></td></address>

      <pre id="vxupu"><small id="vxupu"></small></pre>
      <dfn id="vxupu"></dfn>
      <div id="vxupu"><small id="vxupu"></small></div>
    1. 新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種基于ARM-Linux的FPGA程序加載方法

      一種基于ARM-Linux的FPGA程序加載方法

      作者: 時間:2012-11-30 來源:網(wǎng)絡 收藏


        4、嵌入式 的驅(qū)動實現(xiàn)

        本文以模塊形式實現(xiàn)了運行于S3C2410上的linux驅(qū)動程序,源文件如下(有關(guān)寄存器

        的設置參考S3C2410的數(shù)據(jù)手冊,以下源代碼未包含頭文件):

        #define GPIO_va_base 0x0F6000000

        //基于S3C2410 上的內(nèi)核IO控制寄存器首地址映射后的虛擬地址

        #define _GPDCON PIO_va_base+0x30);

        #define _GPDUP PIO_va_base+0x38);

        #define _port_wr(addr,value) *(volatile unsigned int*)(addr)=value)

        //定義輸出

        #define _CS 8

        #define _RW 9

        #define _PROG 12

        #define FPGA_CCLK 14

        //定義操作

        #define ARM_GPDDAT (*(volatile u32 *)(GPIO_va_base+0x34))

        #define set_register_bit(x) ARM_GPDDAT=(1x)|ARM_GPDDAT

        #define clear_register_bit(x) ARM_GPDDAT=(~(1x))ARM_GPDDAT

        //定義輸入

        #define FPGA_INIT ((ARM_GPDDAT>>10)1)

        #define FPGA_BUSY ((ARM_GPDDAT>>11)1)

        #define FPGA_DONE ((ARM_GPDDAT>>13)1)

        #define FPGA 211

        //定義主設備號,和mknod /dev/fpga c 211 0匹配

        typedef char fpga_device_t;

        static fpga_device_t fpga_devices[257];

        char buf[1000000];

        int fpga_open(struct inode *, struct file *);

        ssize_t fpga_write(struct file *,const char *,size_t ,loff_t *);

        int fpga_release(struct inode*, struct file *);

        //初始化ARM的D組通用IO管腳

        void init_fpga(void){

        ARM_port_wr(GPIO_va_base+0x30,0x55555555);

        //FPGA_BUSY FPGA_DONE FPGA_INIT be set input

        ARM_port_wr(GPIO_va_base+0x34,0xFFFF);

        ARM_port_wr(GPIO_va_base+0x30,0x51055555);

        ARM_port_wr(GPIO_va_base+0x38,0);// put up

        set_register_bit(FPGA_CCLK);//set GCLK

        }

        static struct file_operations fpga_ctl_fops= {

        open: fpga_open,

        write: fpga_write,

        release: fpga_release,};

        int init_module(void) {

        printk("Hello,word,Now preparing FPGA......");

        printk("register FPGA......");

        register_chrdev(FPGA, "fpga", fpga_ctl_fops);

        printk("Done!");

        printk("Hello,word,success!");

        return 0;

        }

      linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


      關(guān)鍵詞: ARM Linux FPGA 程序加載

      評論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉