1. 安裝韋東山的虛擬版的ubuntu 9, 里面交叉編譯啥的都弄好了, 直接用, 然后把workstation共享目錄打開(kāi), 指向uboot的壓縮包所在目錄.
2. 在虛擬機(jī)上, 打開(kāi)ssh, 通過(guò)ssh, 進(jìn)/mnt/hgfs/ 把uboot壓縮包解壓了.
3. 編輯Makefile, 在smdk2400下面增加兩行, 注意要好tab鍵
smdk2400_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0
tx2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t tx2440 NULL s3c24x0
修改交叉編譯命令如紅色部分:
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
4. 把board目錄下的除smdk2140目錄其他全刪了, 然后把smdk2140改名成tx2440
進(jìn)去tx2440, 修改一下smdk2140.c改成tx2440.c
然后用vi, 修改board_init, 增加時(shí)鐘的有關(guān)注釋, 如下:
/* S3C2440: Mpll,Upll = (2*m * Fin) / (p * 2^s)
* m = M (the value for divider M)+ 8, p = P (the value for divider P) + 2
*/
#define S3C2440_MPLL_400MHZ ((0x7f<<12)|(0x02<<4)|(0x01))
#define S3C2440_UPLL_48MHZ ((0x38<<12)|(0x02<<4)|(0x02))
#define S3C2440_CLKDIV 0x05 /* FCLK:HCLK:PCLK = 1:4:8 */
/* S3C2410: Mpll,Upll = (m * Fin) / (p * 2^s)
* m = M (the value for divider M)+ 8, p = P (the value for divider P) + 2
*/
#define S3C2410_MPLL_200MHZ ((0x5c<<12)|(0x04<<4)|(0x00))
#define S3C2410_UPLL_48MHZ ((0x28<<12)|(0x01<<4)|(0x02))
#define S3C2410_CLKDIV 0x03 /* FCLK:HCLK:PCLK = 1:2:4 */
int board_init (void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
/* set up the I/O ports */
gpio->GPACON = 0x007FFFFF;
gpio->GPBCON = 0x00044555;
gpio->GPBUP = 0x000007FF;
gpio->GPCCON = 0xAAAAAAAA;
gpio->GPCUP = 0x0000FFFF;
gpio->GPDCON = 0xAAAAAAAA;
gpio->GPDUP = 0x0000FFFF;
gpio->GPECON = 0xAAAAAAAA;
gpio->GPEUP = 0x0000FFFF;
gpio->GPFCON = 0x000055AA;
gpio->GPFUP = 0x000000FF;
gpio->GPGCON = 0xFF95FFBA;
gpio->GPGUP = 0x0000FFFF;
gpio->GPHCON = 0x002AFAAA;
gpio->GPHUP = 0x000007FF;
/*support both of S3C2410 and S3C2440*/
if ((gpio->GSTATUS1 == 0x32410000) || (gpio->GSTATUS1 == 0x32410002))
{
/*FCLK:HCLK:PCLK = 1:2:4*/
clk_power->CLKDIVN = S3C2410_CLKDIV;
/* change to asynchronous bus mod */
__asm__( 'mrc p15, 0, r1, c1, c0, 0/n' /* read ctrl register */
'orr r1, r1, #0xc0000000/n' /* Asynchronous */
'mcr p15, 0, r1, c1, c0, 0/n' /* write ctrl register */
:::'r1'
);
/* to reduce PLL lock time, adjust the LOCKTIME register */
clk_power->LOCKTIME = 0xFFFFFF;
/* configure MPLL */
clk_power->MPLLCON = S3C2410_MPLL_200MHZ;
/* some delay between MPLL and UPLL */
delay (4000);
/* configure UPLL */
clk_power->UPLLCON = S3C2410_UPLL_48MHZ;
/* some delay between MPLL and UPLL */
delay (8000);
/* arch number of SMDK2410-Board */
gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
}
else
{
/* FCLK:HCLK:PCLK = 1:4:8 */
clk_power->CLKDIVN = S3C2440_CLKDIV;
/* change to asynchronous bus mod */
__asm__( 'mrc p15, 0, r1, c1, c0, 0/n' /* read ctrl register */
'orr r1, r1, #0xc0000000/n' /* Asynchronous */
'mcr p15, 0, r1, c1, c0, 0/n' /* write ctrl register */
:::'r1'
);
/* to reduce PLL lock time, adjust the LOCKTIME register */
clk_power->LOCKTIME = 0xFFFFFF;
/* configure MPLL */
clk_power->MPLLCON = S3C2440_MPLL_400MHZ;
/* some delay between MPLL and UPLL */
delay (4000);
/* configure UPLL */
clk_power->UPLLCON = S3C2440_UPLL_48MHZ;
/* some delay between MPLL and UPLL */
delay (8000);
/* arch number of SMDK2440-Board */
gd->bd->bi_arch_number = MACH_TYPE_S3C2440;
}
/* adress of boot parameters */
gd->bd->bi_boot_params = 0x30000100;
icache_enable();
dcache_enable();
return 0;
}
接著修改這個(gè)board/tx2440/下面的Makefile
把原來(lái)的smdk2410.o改成下面:
COBJS := tx2440.o flash.o
5. 進(jìn)include/configs/, 把其他的都刪掉, 只把smdk2140.h改名為tx2440.h
6. 把cpu/arm920t/config.mk里面-msoft-float注釋掉
PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8
# -msoft-float
7. 用make tx2440_config看看有否:
Configuring for tx2440 board...
8. 增加對(duì)sdram的支持, 確定board/tx2440/lowlevel_init.s內(nèi)存映射如下:
#define B1_BWSCON (DW32)
#define B2_BWSCON (DW16)
#define B3_BWSCON (DW16 + WAIT + UBLB)
#define B4_BWSCON (DW16)
#define B5_BWSCON (DW16)
#define B6_BWSCON (DW32)
#define B7_BWSCON (DW32)
并修改REFCNT為0x4f4
#define REFCNT 0x4f4 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
9. 修改cpu/arm920t/s3c24X0/speed.c
增加一行:
DECLARE_GLOBAL_DATA_PTR;
增加紅色的部分:
static ulong get_PLLCLK(int pllreg)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
ulong r, m, p, s;
if (pllreg == MPLL)
r = clk_power->MPLLCON;
else if (pllreg == UPLL)
r = clk_power->UPLLCON;
else
hang();
m = ((r & 0xFF000) >> 12) + 8;
p = ((r & 0x003F0) >> 4) + 2;
s = r & 0x3;
/* support both of S3C2410 and S3C2440 */
if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
return((CONFIG_SYS_CLK_FREQ * m) / (p << s));
else
return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s)); /* S3C2440 */
// return((CONFIG_SYS_CLK_FREQ * m) / (p << s));
}
/* return FCLK frequency */
ulong get_FCLK(void)
{
return(get_PLLCLK(MPLL));
}
同時(shí)增加下面的:
/* for s3c2440 */
#define S3C2440_CLKDIVN_PDIVN (1<<0)
#define S3C2440_CLKDIVN_HDIVN_MASK (3<<1)
#define S3C2440_CLKDIVN_HDIVN_1 (0<<1)
#define S3C2440_CLKDIVN_HDIVN_2 (1<<1)
#define S3C2440_CLKDIVN_HDIVN_4_8 (2<<1)
#define S3C2440_CLKDIVN_HDIVN_3_6 (3<<1)
#define S3C2440_CLKDIVN_UCLK (1<<3)
#define S3C2440_CAMDIVN_CAMCLK_MASK (0xf<<0)
#define S3C2440_CAMDIVN_CAMCLK_SEL (1<<4)
#define S3C2440_CAMDIVN_HCLK3_HALF (1<<8)
#define S3C2440_CAMDIVN_HCLK4_HALF (1<<9)
#define S3C2440_CAMDIVN_DVSEN (1<<12)
/* return HCLK frequency */
ulong get_HCLK(void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
unsigned long clkdiv;
unsigned long camdiv;
int hdiv = 1;
/* support both of S3C2410 and S3C2440 */
if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
return((clk_power->CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK());
else
{
clkdiv = clk_power->CLKDIVN;
camdiv = clk_power->CAMDIVN;
/* work out clock scalings */
switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {
case S3C2440_CLKDIVN_HDIVN_1:
hdiv = 1;
break;
case S3C2440_CLKDIVN_HDIVN_2:
hdiv = 2;
break;
case S3C2440_CLKDIVN_HDIVN_4_8:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
break;
case S3C2440_CLKDIVN_HDIVN_3_6:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
break;
}
return get_FCLK() / hdiv;
}
}
/* return PCLK frequency */
ulong get_PCLK(void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
unsigned long clkdiv;
unsigned long camdiv;
int hdiv = 1;
/* support both of S3C2410 and S3C2440 */
if (gd->bd->bi_arch_number == MACH_TYPE_SMDK2410)
return((clk_power->CLKDIVN & 0x1) ? get_HCLK()/2 : get_HCLK());
else
{
clkdiv = clk_power->CLKDIVN;
camdiv = clk_power->CAMDIVN;
/* work out clock scalings */
switch (clkdiv & S3C2440_CLKDIVN_HDIVN_MASK) {
case S3C2440_CLKDIVN_HDIVN_1:
hdiv = 1;
break;
case S3C2440_CLKDIVN_HDIVN_2:
hdiv = 2;
break;
case S3C2440_CLKDIVN_HDIVN_4_8:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK4_HALF) ? 8 : 4;
break;
case S3C2440_CLKDIVN_HDIVN_3_6:
hdiv = (camdiv & S3C2440_CAMDIVN_HCLK3_HALF) ? 6 : 3;
break;
}
return get_FCLK() / hdiv / ((clkdiv & S3C2440_CLKDIVN_PDIVN)? 2:1);
}
}
上一篇:TQ2440觸摸屏
下一篇:ALSA聲卡_從零編寫(xiě)之?dāng)?shù)據(jù)傳輸(基于優(yōu)龍F(tuán)S2410開(kāi)發(fā)板,UDA1341聲卡)
推薦閱讀最新更新時(shí)間:2025-05-22 00:55



設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無(wú)刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無(wú)線智能控制器的設(shè)計(jì)
- 基于PTR2000的無(wú)線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無(wú)人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- LTC2975 的典型應(yīng)用 - 具有準(zhǔn)確輸入電流和能量測(cè)量功能的 4 通道 PMBU 電源系統(tǒng)管理器
- STM32 Nucleo-64 開(kāi)發(fā)板,帶 STM32WB15CC,支持 Arduino、ST Morpho 連接
- 使用 Analog Devices 的 LT1302CN8-5 的參考設(shè)計(jì)
- MC33364臨界導(dǎo)通模式反激轉(zhuǎn)換器的典型應(yīng)用電路
- AD9754-EB,用于 AD9754、14 位、125 MSPS 高性能 D/A 轉(zhuǎn)換器的評(píng)估板
- LTC1064-3,優(yōu)于用于數(shù)據(jù)通信的貝塞爾線性相位濾波器
- NCS2001SN2T1G 0.9V單電源運(yùn)放正電容乘法器典型應(yīng)用電路
- AM6TW-4803DH35Z ±3.3V 6 瓦雙路輸出 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- 使用 Analog Devices 的 LTC1538IG-AUX 的參考設(shè)計(jì)
- DC1198B-B,使用 LTM4607EV、6 至 36 Vin 至 12V、5A 高效降壓-升壓 DC/DC 模塊穩(wěn)壓器的演示板
- 吉利電池安全標(biāo)準(zhǔn)升級(jí),“神盾金磚電池”有什么技術(shù)亮點(diǎn)?
- 中國(guó)汽車工程學(xué)會(huì)出臺(tái)全固態(tài)電池新標(biāo)準(zhǔn)
- Allegro如何用技術(shù)定義汽車電子新范式
- 恩智浦半導(dǎo)體推出汽車級(jí)開(kāi)發(fā)平臺(tái)OrangeBox 2.0 旨在促進(jìn)安全的汽車通信
- 三大上市公司加碼/跨界固態(tài)電池關(guān)鍵材料!
- 一大波全固態(tài)電池新產(chǎn)品來(lái)了!
- 欣旺達(dá)/瑞浦/恩捷/力華/杜爾······12大企業(yè)電池行業(yè)新品來(lái)襲
- 新唐科技發(fā)布第四代『GerdaTM』系列,車用HMI顯示IC產(chǎn)品開(kāi)始量產(chǎn)
- 寧德時(shí)代的電+Momenta的腦,“智電雙極”重構(gòu)全球汽車格局
- 一文讀懂:固態(tài)電池產(chǎn)業(yè)鏈通覽
- 封裝業(yè)者以IoT技術(shù)強(qiáng)化工廠及供應(yīng)鏈管理
- B2B2C的發(fā)展模式,值得有意投入物聯(lián)網(wǎng)的業(yè)者借鏡參考
- 中國(guó)企業(yè)發(fā)布自主研發(fā)北斗射頻芯片“恒星一號(hào)”
- 6英寸半導(dǎo)體石墨烯片一期項(xiàng)目啟動(dòng)地勘
- 工信部:發(fā)展好電子化工新材料
- Vayyar推出突破性的新款毫米波3D成像片上系統(tǒng)評(píng)估套件
- 新造車勢(shì)力燒錢大戰(zhàn)如火如荼,奇點(diǎn)汽車要掉隊(duì)?
- 特斯拉是否會(huì)對(duì)國(guó)內(nèi)的新能源汽車產(chǎn)業(yè)造成很大影響?
- 大眾與福特或?qū)⒊闪⒙?lián)盟的消息刷遍了全球汽車圈
- 同樣主打智能電動(dòng)汽車,蔚來(lái)和小鵬有哪些不同?
- 開(kāi)關(guān)電源興趣小組 第11次任務(wù)
- 處理一批2.4寸TFT屏,每人限購(gòu)10PCS,有美女,有送!
- zigbee終端通過(guò)按鍵設(shè)置PAN ID加入到設(shè)定的ID網(wǎng)絡(luò)
- DSP5509A音頻通道求助
- Proteus 如何利用matlab 2013A CCS5.2 實(shí)現(xiàn)仿真調(diào)試
- DIY-STM32F103ZET6核心板 + 4.3寸液晶驅(qū)動(dòng)板
- 說(shuō)說(shuō)解決EXP430G2與MSP430FR5xxx調(diào)試問(wèn)題
- evc4.0能開(kāi)發(fā)wince5.0的程序么--急!
- 初學(xué)者問(wèn)題
- 【以拆會(huì)友】拆解電子水位儀