<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于3c2410的linux2.6.22移植(5)

          基于3c2410的linux2.6.22移植(5)

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          三、 網(wǎng)卡和LCD驅(qū)動的移植1. 網(wǎng)卡驅(qū)動移植:
          這塊板使用的是DM9000的網(wǎng)卡芯片,驅(qū)動的源代碼在內(nèi)核源代碼的目錄中可以找到:
          arm/%23">$root@host:/home/arm/# cd kernel/linux-2.6.22
          $root@host:/home/arm/kernel/linux-2.6.22# cd drivers/net
          $root@host:/home/arm/kernel/linux-2.6.22/drivers/net# ls dm*
          dm9000.c dm9000.h
          修改dm9000.c:
          $root@host:/home/arm/kernel/linux-2.6.22# vi dm9000.c
          找到函數(shù):
          static int dm9000_probe(struct platform_device *pdev)
          {
          ……….
          int ret=0;
          int iosize;
          int i;
          u32 idval
          //添加下面數(shù)組,前6個數(shù)作為網(wǎng)卡的mac地址,注意不能和現(xiàn)有的網(wǎng)卡沖突
          unsigned char ne_defethadder[]={0x08,0x08,0x08,0x08,0x12,0x27,0}
          ………………………….
          ………………………….

          for (i = 0; i < 6; i++)
          ndev->dev_addr[i] = db->srom[i];

          if (!is_valid_ether_addr(ndev->dev_addr)) {


          for (i = 0; i < 6; i++)
          //修改mac地址
          // ndev->dev_addr[i] = ior(db, i+DM9000_PAR);
          ndev->dev_addr[i]=ne_defethaddr[i];
          ………………………
          ……………………….
          }
          退出保存。
          修改smdk2410.c:
          $root@host:/home/arm/kernel/linux-2.6.22# cd arch/arm/mach-s3c2410
          $root@host:/home/arm/kernel/linux-2.6.22/arch/arm/mach-s3c2410#
          vi mach-smdk2410.c
          在mach-smdk2410.c中添加如下內(nèi)容:
          …………
          #include
          //添加:
          #include
          …………
          ………….
          #define UCON S3C2410_UCON_DEFAULT
          #define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
          #define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
          //添加:

          static struct resource s3c_d9k_resource[]=
          {
          [0]={
          .start =0x10000000,
          .end =0x10000000,
          .flags=IORESOURCE_MEM
          },
          [1]={
          .start =0x10000000+0x2,
          .end =0x10000000+0x2,
          .flags=IORESOURCE_MEM
          },
          [2]={
          .start =IRQ_EINT2,
          .end =IRQ_EINT2,
          .flags =IORESOURCE_IRQ
          }
          };
          static struct dm9000_plat_data s3c_device_d9k_platdata = {
          .flags= DM9000_PLATF_16BITONLY
          };

          struct platform_device s3c_device_d9k = {
          .name= "dm9000",
          .id= 0,
          .num_resources= ARRAY_SIZE(s3c_d9k_resource),
          .resource= s3c_d9k_resource,
          .dev= {
          .platform_data = &s3c_device_d9k_platdata,
          }
          };
          ………………….
          ………………….
          static struct platform_device *smdk2410_devices[] __initdata = {
          &s3c_device_usb,
          //啟動lcd
          &s3c_device_lcd,
          &s3c_device_wdt,
          &s3c_device_i2c,
          &s3c_device_iis,
          //添加
          &s3c_device_d9k
          //&s3c_device_ts,
          };
          需要注意的是起始地址和中斷號的選擇。這塊板上DM9000芯片的INT引腳接的是EINT2,CMD引腳接的是A1,CS引腳接的是nGCS2,所以DM9000的index端口地址是0x10000000,data端口地址是0x10000000+0x00000002,據(jù)此設(shè)置結(jié)構(gòu)resource s3c_d9k_resource中的參數(shù)。最后在內(nèi)核編譯時加上對DM9000驅(qū)動的支持就可以了,具體見內(nèi)核配置和編譯。



          關(guān)鍵詞: 3c2410linux2.6.22移

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();