AM335x(TQ335x)學(xué)習(xí)筆記——u-boot-2014.10移植
由于TI的am335x evm開發(fā)使用了一個(gè)eeprom保存了板載配置信息,用來區(qū)分不同板子的型號(hào)的,而TQ335x沒有這個(gè)eeprom,因此,需要修改eeprom相關(guān)的部分,使u-boot適應(yīng)TQ335x開發(fā)板。
本文引用地址:http://m.butianyuan.cn/article/201611/322817.htm使用source insight查看代碼,很容易發(fā)現(xiàn),所有獲取板載配置的部分都是通過讀取eeprom獲得的,因此,首選修改read_eeprom(board/ti/am335x/board.c)函數(shù),具體的修改如下:
- staticintread_eeprom(structam335x_baseboard_id*header)
- {
- #if1
- strcpy(header->name,"TQ335x");
- #else
- /*Checkifbaseboardeepromisavailable*/
- if(i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)){
- puts("CouldnotprobetheEEPROM;somethingfundamentally"
- "wrongontheI2Cbus.");
- return-ENODEV;
- }
- /*readtheeepromusingi2c*/
- if(i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR,0,2,(uchar*)header,
- sizeof(structam335x_baseboard_id))){
- puts("CouldnotreadtheEEPROM;somethingfundamentally"
- "wrongontheI2Cbus.");
- return-EIO;
- }
- if(header->magic!=0xEE3355AA){
- /*
- *readtheeepromusingi2cagain,
- *butuseonlya1byteaddress
- */
- if(i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR,0,1,(uchar*)header,
- sizeof(structam335x_baseboard_id))){
- puts("CouldnotreadtheEEPROM;something"
- "fundamentallywrongontheI2Cbus.");
- return-EIO;
- }
- if(header->magic!=0xEE3355AA){
- printf("Incorrectmagicnumber(0x%x)inEEPROM",
- header->magic);
- return-EINVAL;
- }
- }
- #endif
- return0;
- }
然后是修改get_dpll_ddr_params(board/ti/am335x/board.c)函數(shù),具體的修改內(nèi)容如下:
- conststructdpll_params*get_dpll_ddr_params(void)
- {
- structam335x_baseboard_idheader;
- enable_i2c0_pin_mux();
- i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED,CONFIG_SYS_OMAP24_I2C_SLAVE);
- if(read_eeprom(&header)<0)
- puts("CouldnotgetboardID.");
- if(board_is_tq335x(&header)||board_is_evm_sk(&header))
- return&dpll_ddr_evm_sk;
- elseif(board_is_bone_lt(&header))
- return&dpll_ddr_bone_black;
- elseif(board_is_evm_15_or_later(&header))
- return&dpll_ddr_evm_sk;
- else
- return&dpll_ddr;
- }
- voidsdram_init(void)
- {
- __maybe_unusedstructam335x_baseboard_idheader;
- if(read_eeprom(&header)<0)
- puts("CouldnotgetboardID.");
- if(board_is_evm_sk(&header)){
- /*
- *EVMSK1.2Aandlaterusegpio0_7toenableDDR3.
- *Thisissafeenoughtodoonolderrevs.
- */
- gpio_request(GPIO_DDR_VTT_EN,"ddr_vtt_en");
- gpio_direction_output(GPIO_DDR_VTT_EN,1);
- }
- if(board_is_evm_sk(&header)||board_is_tq335x(&header))
- config_ddr(303,&ioregs_evmsk,&ddr3_data,
- &ddr3_cmd_ctrl_data,&ddr3_emif_reg_data,0);
- elseif(board_is_bone_lt(&header))
- config_ddr(400,&ioregs_bonelt,
- &ddr3_beagleblack_data,
- &ddr3_beagleblack_cmd_ctrl_data,
- &ddr3_beagleblack_emif_reg_data,0);
- elseif(board_is_evm_15_or_later(&header))
- config_ddr(303,&ioregs_evm15,&ddr3_evm_data,
- &ddr3_evm_cmd_ctrl_data,&ddr3_evm_emif_reg_data,0);
- else
- config_ddr(266,&ioregs,&ddr2_data,
- &ddr2_cmd_ctrl_data,&ddr2_emif_reg_data,0);
- }
關(guān)鍵詞:
AM335xTQ335xu-boo
相關(guān)推薦
-
hzhzhj | 2012-03-08
-
能力就是實(shí)力 | 2021-10-06
-
-
stupidass | 2004-11-12
-
noisyroad | 2007-03-29
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論