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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AM335x(TQ335x)學(xué)習(xí)筆記——u-boot-2014.10移植

          AM335x(TQ335x)學(xué)習(xí)筆記——u-boot-2014.10移植

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          最近移植了下u-boot-2014.10到TQ335x,如果基于am335x evm進(jìn)行移植,需要修改的地方并不多。

          由于TI的am335x evm開發(fā)使用了一個(gè)eeprom保存了板載配置信息,用來區(qū)分不同板子的型號(hào)的,而TQ335x沒有這個(gè)eeprom,因此,需要修改eeprom相關(guān)的部分,使u-boot適應(yīng)TQ335x開發(fā)板。

          本文引用地址:http://www.ex-cimer.com/article/201611/322817.htm

          使用source insight查看代碼,很容易發(fā)現(xiàn),所有獲取板載配置的部分都是通過讀取eeprom獲得的,因此,首選修改read_eeprom(board/ti/am335x/board.c)函數(shù),具體的修改如下:

          1. staticintread_eeprom(structam335x_baseboard_id*header)
          2. {
          3. #if1
          4. strcpy(header->name,"TQ335x");
          5. #else
          6. /*Checkifbaseboardeepromisavailable*/
          7. if(i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)){
          8. puts("CouldnotprobetheEEPROM;somethingfundamentally"
          9. "wrongontheI2Cbus.");
          10. return-ENODEV;
          11. }
          12. /*readtheeepromusingi2c*/
          13. if(i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR,0,2,(uchar*)header,
          14. sizeof(structam335x_baseboard_id))){
          15. puts("CouldnotreadtheEEPROM;somethingfundamentally"
          16. "wrongontheI2Cbus.");
          17. return-EIO;
          18. }
          19. if(header->magic!=0xEE3355AA){
          20. /*
          21. *readtheeepromusingi2cagain,
          22. *butuseonlya1byteaddress
          23. */
          24. if(i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR,0,1,(uchar*)header,
          25. sizeof(structam335x_baseboard_id))){
          26. puts("CouldnotreadtheEEPROM;something"
          27. "fundamentallywrongontheI2Cbus.");
          28. return-EIO;
          29. }
          30. if(header->magic!=0xEE3355AA){
          31. printf("Incorrectmagicnumber(0x%x)inEEPROM",
          32. header->magic);
          33. return-EINVAL;
          34. }
          35. }
          36. #endif
          37. return0;
          38. }
          通過上述修改,u-boot不去讀取eeprom,而是直接將header的name賦值為"TQ335x",后面可以根據(jù)這一配置區(qū)分是否為TQ335x開發(fā)板。

          然后是修改get_dpll_ddr_params(board/ti/am335x/board.c)函數(shù),具體的修改內(nèi)容如下:

          1. conststructdpll_params*get_dpll_ddr_params(void)
          2. {
          3. structam335x_baseboard_idheader;
          4. enable_i2c0_pin_mux();
          5. i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED,CONFIG_SYS_OMAP24_I2C_SLAVE);
          6. if(read_eeprom(&header)<0)
          7. puts("CouldnotgetboardID.");
          8. if(board_is_tq335x(&header)||board_is_evm_sk(&header))
          9. return&dpll_ddr_evm_sk;
          10. elseif(board_is_bone_lt(&header))
          11. return&dpll_ddr_bone_black;
          12. elseif(board_is_evm_15_or_later(&header))
          13. return&dpll_ddr_evm_sk;
          14. else
          15. return&dpll_ddr;
          16. }
          然后是修改sdram_init(board/ti/am335x/board.c)函數(shù),具體的修改內(nèi)容如下:
          1. voidsdram_init(void)
          2. {
          3. __maybe_unusedstructam335x_baseboard_idheader;
          4. if(read_eeprom(&header)<0)
          5. puts("CouldnotgetboardID.");
          6. if(board_is_evm_sk(&header)){
          7. /*
          8. *EVMSK1.2Aandlaterusegpio0_7toenableDDR3.
          9. *Thisissafeenoughtodoonolderrevs.
          10. */
          11. gpio_request(GPIO_DDR_VTT_EN,"ddr_vtt_en");
          12. gpio_direction_output(GPIO_DDR_VTT_EN,1);
          13. }
          14. if(board_is_evm_sk(&header)||board_is_tq335x(&header))
          15. config_ddr(303,&ioregs_evmsk,&ddr3_data,
          16. &ddr3_cmd_ctrl_data,&ddr3_emif_reg_data,0);
          17. elseif(board_is_bone_lt(&header))
          18. config_ddr(400,&ioregs_bonelt,
          19. &ddr3_beagleblack_data,
          20. &ddr3_beagleblack_cmd_ctrl_data,
          21. &ddr3_beagleblack_emif_reg_data,0);
          22. elseif(board_is_evm_15_or_later(&header))
          23. config_ddr(303,&ioregs_evm15,&ddr3_evm_data,
          24. &ddr3_evm_cmd_ctrl_data,&ddr3_evm_emif_reg_data,0);
          25. else
          26. config_ddr(266,&ioregs,&ddr2_data,
          27. &ddr2_cmd_ctrl_data,&ddr2_emif_reg_data,0);
          28. }
            上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: AM335xTQ335xu-boo

          評(píng)論


          技術(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); })();