移植前的準備
獲取并解壓源碼
SAMSUNG公司于2017年初停止了對S3C2410系列CPU的官方u-boot支持(可在最新版u-boot源碼中打開doc/README.scrapyard,搜索關鍵字S3C2440查看相關說明)。從http://ftp.denx.de/pub/u-boot/下載支持S3C2410處理器的最后一版官方u-boot源碼u-boot-2016.11.tar.bz2,放到宿主機的/opt/u-boot/下。
解壓源代碼并進入根目錄:
tar jxvf u-boot-2016.11.tar.bz2
cd u-boot-2016.11/
指定交叉編譯器
gedit Makefile
找到:
# set default to nothing for native builds
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
在下方新插入一行:
CROSS_COMPILE ?=arm-linux-
創建板卡支持文件
(1)創建板卡支持文件夾
拷貝官方smdk2410文件夾進行修改:
cp -rf board/samsung/smdk2410/ board/samsung/tq2440
(2)修改板卡硬件初始化文件
gedit board/samsung/tq2440/lowlevel_init.S
修改s3c2410.S為tq2440.S,修改SMDK2410為TQ2440。
(3)修改板卡高級初始化文件
重命名該文件夾下的smdk2410.c為tq2440.c:
mv board/samsung/tq2440/smdk2410.c board/samsung/tq2440/tq2440.c
編輯該文件:
gedit board/samsung/tq2440/tq2440.c
替換所有SMDK2410為TQ2440,并添加編譯選項。
gedit board/samsung/tq2440/Makefile
修改smdk2410.o為tq2440.o
(4)修改板卡配置文件
編輯該文件:
gedit board/samsung/tq2440/Kconfig
內容為:
if TARGET_TQ2440
config SYS_BOARD
default "tq2440"
config SYS_VENDOR
default "samsung"
config SYS_SOC
default "s3c24x0"
config SYS_CONFIG_NAME
default "tq2440"
endif
(5)添加板卡支持文件信息
gedit arch/arm/Kconfig
找到
config TARGET_SMDK2410
bool "Support smdk2410"
select CPU_ARM920T
在下方插入:
config TARGET_TQ2440
bool "Support tq2440"
select CPU_ARM920T
找到:
source "board/samsung/smdk2410/Kconfig"
在下方插入:
source "board/samsung/tq2440/Kconfig"
(6)修改板卡支持維護信息
gedit board/samsung/tq2440/MAINTAINERS
修改內容為:
TQ2440 BOARD
M: Lion <41979748@qq.com>
S: Maintained
F: board/samsung/tq2440/
F: include/configs/tq2440.h
F: configs/tq2440_defconfig
(7)添加板卡識別信息
gedit arch/arm/include/asm/mach-types.h
找到:
#define MACH_TYPE_SMDK2410 193
在下方插入:
#define MACH_TYPE_TQ2440 168
找到:
#ifdef CONFIG_ARCH_SMDK2410
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_SMDK2410
# endif
# define machine_is_smdk2410() (machine_arch_type == MACH_TYPE_SMDK2410)
#else
# define machine_is_smdk2410() (0)
#endif
在下面插入一段:
#ifdef CONFIG_ARCH_TQ2440
# ifdef machine_arch_type
# undef machine_arch_type
# define machine_arch_type __machine_arch_type
# else
# define machine_arch_type MACH_TYPE_TQ2440
# endif
# define machine_is_tq2440() (machine_arch_type == MACH_TYPE_TQ2440)
#else
# define machine_is_tq2440() (0)
#endif
創建板卡配置頭文件
cp include/configs/smdk2410.h include/configs/tq2440.h
編輯該文件:
gedit include/configs/tq2440.h
替換S3C2410為S3C2440,替換SMDK2410為TQ2440
創建NAND Flash驅動文件
cp drivers/mtd/nand/s3c2410_nand.c drivers/mtd/nand/s3c2440_nand.c
編輯該文件:
gedit drivers/mtd/nand/s3c2440_nand.c
添加編譯選項:
gedit drivers/mtd/nand/Makefile
找到:
obj-$(CONFIG_NAND_S3C2410) += s3c2410_nand.o
在下方插入一行:
obj-$(CONFIG_NAND_S3C2440) += s3c2440_nand.o
創建默認編譯配置文件
創建tq2440開發板默認配置文件:
cp configs/smdk2410_defconfig configs/tq2440_defconfig
編輯該文件:
gedit configs/tq2440_defconfig
修改開發板目標:
替換CONFIG_TARGET_SMDK2410=y為CONFIG_TARGET_TQ2440=y;
修改命令行前綴:
替換CONFIG_SYS_PROMPT="SMDK2410 # "為CONFIG_SYS_PROMPT="TQ2440 # ";
測試編譯環境
(1)清理環境并重新編譯
make distclean
make tq2440_defconfig
make
編譯失敗,并提示” Not enough room for program headers, try linking with -N”錯誤:
錯誤信息:
arm-linux-ld.bfd: u-boot: Not enough room for program headers, try linking with -N
arm-linux-ld.bfd: final link failed: Bad value
Makefile:1209: recipe for target 'u-boot' failed
make: *** [u-boot] Error 1
(2)根據網上資料,修改頂層配置文件:
gedit Makefile
找到:
LDFLAGS_u-boot += $(LDFLAGS_FINAL)
在下面插入:
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards
LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)
(3)重新編譯
make
在根目錄下生成了u-boot.bin文件,但提示“Error: You must add new CONFIG options using Kconfig”錯誤
錯誤信息:
Error: You must add new CONFIG options using Kconfig
The following new ad-hoc CONFIG options were detected:
CONFIG_NAND_S3C2440
CONFIG_SYS_S3C2440_NAND_HWECC
CONFIG_TQ2440
Please add these via Kconfig instead. Find a suitable Kconfig
file and add a 'config' or 'menuconfig' option.
Makefile:827: recipe for target 'all' failed
make: *** [all] Error 1
這一個錯誤產生的原因是修改了配置頭文件中的默認宏定義而導致配置檢查無法通過,如果根據消息提示手工在whitelist.txt文件中添加相應宏,由于不知道whitelist.txt文件中的排序規則,仍舊可能報錯。
(4)解決白名單校驗不通過問題
根據網上資料來看,目前切實有效的解決辦法是關閉該校驗功能。
gedit Makefile
找到:
$(srctree)/scripts/check-config.sh u-boot.cfg
$(srctree)/scripts/config_whitelist.txt ${srctree} 1>&2
在開頭位置使用#屏蔽這兩行:
# $(srctree)/scripts/check-config.sh u-boot.cfg
# $(srctree)/scripts/config_whitelist.txt ${srctree} 1>&2
創建自動編譯批處理腳本
(1)編寫自動編譯腳本
gedit auto_build.sh
添加如下內容:
#!/bin/bash
echo "Clean Configuration File..."
make distclean
echo "Clean Obj..."
make clean
echo "Load Configuration File..."
make tq2440_defconfig
echo "make..."
make CROSS_COMPILE=arm-linux-
echo "Copy bins to TFTP Folder...."
cp /opt/u-boot/u-boot-2016.11/u-boot.bin /opt/TFTP/u-boot.bin
cp /opt/u-boot/u-boot-2016.11/spl/u-boot-spl.bin /opt/TFTP/u-boot-spl.bin
(2)為自動編譯腳本文件添加執行權限
sudo chmod +X auto_build.sh
(3)修改自動編譯腳本文件所有者
sudo chown -R tq2440:root /opt/u-boot/u-boot-2016.11/auto_build.sh
(4)執行自動編譯腳本
bash ./auto_build.sh
編譯成功:
小結
至此,我們完成了u-boot-2016.11移植到TQ2440開發板的前期準備工作。
修改芯片初始化代碼
修改屏蔽中斷代碼
gedit arch/arm/cpu/arm920t/start.S
找到:
# if defined(CONFIG_S3C2410)
ldr r1, =0x3ff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
在下面為S3C2440芯片添加:
# if defined(CONFIG_S3C2440)
ldr r1, =0x7ff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
修改時鐘初始化代碼
(1)修改芯片時鐘初始化代碼
gedit arch/arm/cpu/arm920t/start.S
找到:
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
替換為:
#if defined(CONFIG_S3C2440)
#define CLK_CTL_BASE 0x4C000000
#define MDIV_405 0x7f<<12
#define PSDIV_405 0x21
/* FCLK:HCLK:PCLK = 1:4:8 */
/* default FCLK is 405 MHz ! */
ldr r0, =CLKDIVN
mov r1, #5
str r1, [r0]
/* set asynchronous bus mod */
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #0xc0000000
mcr p15, 0, r1, c1, c0, 0
/* MPLL is 405 MHz ! */
mov r1, #CLK_CTL_BASE
mov r2, #MDIV_405
add r2, r2, #PSDIV_405
str r2, [r1, #0x04]
#else
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
#endif /* CONFIG_S3C2440 */
(2)修改板卡時鐘初始化代碼
gedit board/samsung/tq2440/tq2440.c
添加一個新的FCLK配置模式,找到:
#define FCLK_SPEED 1
修改為:
#if !defined(CONFIG_S3C2440)
#define FCLK_SPEED 1
#else
#define FCLK_SPEED 2
#endif /* CONFIG_S3C2440 */
找到對應的配置項:
#if (FCLK_SPEED == 0) /* Fout = 203MHz, Fin = 12MHz for Audio */
#define M_MDIV 0xC3
#define M_PDIV 0x4
#define M_SDIV 0x1
#elif (FCLK_SPEED == 1) /* Fout = 202.8MHz */
#define M_MDIV 0xA1
#define M_PDIV 0x3
#define M_SDIV 0x1
#endif
添加配置模式為2的分支選項:
#if (FCLK_SPEED == 0) /* Fout = 203MHz, Fin = 12MHz for Audio */
#define M_MDIV 0xC3
#define M_PDIV 0x4
#define M_SDIV 0x1
#elif (FCLK_SPEED == 1) /* Fout = 202.8MHz */
#define M_MDIV 0xA1
#define M_PDIV 0x3
#define M_SDIV 0x1
#elif (FCLK_SPEED == 2) /* Fout = 405Hz */
#define M_MDIV 0x7f
#define M_PDIV 0x2
#define M_SDIV 0x1
#endif
添加一個新的UCLK配置模式,找到:
#define USB_CLOCK 1
替換為:
#if !defined(CONFIG_S3C2440)
#define USB_CLOCK 1
#else
#define USB_CLOCK 2
#endif /* CONFIG_S3C2440 */
找到對應的配置項:
#if (USB_CLOCK == 0)
#define U_M_MDIV 0xA1
#define U_M_PDIV 0x3
#define U_M_SDIV 0x1
#elif (USB_CLOCK == 1)
#define U_M_MDIV 0x48
#define U_M_PDIV 0x3
#define U_M_SDIV 0x2
#endif
添加配置模式為2的分支選項:
#if (USB_CLOCK == 0)
#define U_M_MDIV 0xA1
上一篇:S5PV210開發板刷機(SD卡uboot、串口+USB-OTG刷機方法)
下一篇:Ubuntu11.10使用TFTP協議傳輸文件到TQ210開發板學習筆記-1
推薦閱讀
史海拾趣
ACEINNA是一家專注于研發和生產慣性傳感器和解決方案的公司,以下是該公司發展的五個相關故事:
公司成立和起步階段: ACEINNA公司成立于2017年,總部位于美國馬薩諸塞州。公司由來自微機電系統(MEMS)領域的資深專家和工程師共同創立,致力于開發高性能的慣性傳感器和智能控制系統。起步階段,ACEINNA主要專注于磁性慣性測量單元(IMU)和導航解決方案的研發。
技術創新和產品拓展: 隨著技術的不斷進步和市場需求的增長,ACEINNA不斷進行技術創新,并逐步拓展產品線。公司推出了包括慣性測量單元(IMU)、慣性導航系統(INS)、車載導航系統等在內的多種慣性傳感器和解決方案,廣泛應用于汽車、工業、軍事等領域。
市場拓展和國際合作: ACEINNA積極拓展國內外市場,并與全球各地的客戶建立了合作關系。公司的產品被廣泛應用于車輛動態控制、無人駕駛、精準農業等領域,贏得了客戶的認可。同時,ACEINNA還與國際知名汽車制造商、工業企業展開合作,共同推動技術進步和市場發展。
持續投入研發和創新: ACEINNA不斷加大研發投入,致力于技術創新和產品升級。公司設立了專門的研發團隊和實驗室,擁有一系列專利技術,致力于開發新產品和解決方案,滿足客戶不斷變化的需求。
未來發展展望: ACEINNA將繼續致力于慣性傳感器和智能控制系統的研發和應用,不斷推出更先進、更可靠的產品和解決方案,滿足客戶在各個領域的需求。公司將加強國際市場拓展,提升自身在全球市場的競爭力,為行業的發展做出更大的貢獻。
1970年,Corning Cable Systems公司憑借其創新技術,成功發明了世界上首款低損耗光纖。這一里程碑式的發明徹底改變了通信行業的面貌,推動了光纖通信的飛速發展。此后,公司不斷突破技術壁壘,提升光纖性能,為全球范圍內的通信網絡建設提供了強有力的支持。
面對日新月異的電子行業技術和市場變化,DEVCON公司始終保持敏銳的洞察力和創新精神。公司不斷投入研發力量,探索新的技術和應用領域;同時積極尋求與國內外優秀企業的合作機會,共同推動電子行業的發展。正是這種持續的創新與發展精神,讓DEVCON公司在激烈的市場競爭中始終保持領先地位,成為電子行業中不可或缺的重要力量。
以上五個故事是基于DEVCON公司可能的發展路徑和一般電子行業的發展趨勢而虛構的。這些故事旨在展示DEVCON公司如何通過技術創新、市場擴張、服務創新等方式在電子行業中不斷發展和壯大。
Epitex非常重視企業文化的建設和團隊精神的培育。他們倡導“創新、協作、務實、共贏”的價值觀,鼓勵員工積極創新、勇于挑戰。同時,Epitex還注重員工關懷和福利待遇的提升,為員工提供良好的工作環境和發展空間。
在團隊建設方面,Epitex注重培養員工的團隊協作能力和溝通能力。他們定期組織團隊活動和培訓項目,增強團隊的凝聚力和向心力。這種積極向上的企業文化和高效的團隊協作為Epitex的持續發展提供了有力保障。
作為一家領先的電子公司,因美納深知自己的社會責任。公司積極參與各種公益活動,推動基因測序技術在醫療、環保等領域的應用。同時,因美納還注重可持續發展,通過采用環保材料、優化生產流程等方式降低對環境的影響。這種積極履行社會責任和推動可持續發展的做法贏得了社會各界的廣泛贊譽。
Engelking Elektronik一直將品質管理作為公司的核心競爭力之一。公司建立了完善的質量管理體系,從原材料采購到產品制造、測試和包裝等各個環節都進行嚴格的質量控制。此外,公司還定期邀請第三方機構進行質量審核和評估,確保產品符合國際標準和客戶要求。通過持續改進和優化生產流程,Engelking Elektronik的產品質量得到了客戶的高度認可和信賴。
對現代電子系統,即便是最簡單的由單片機和單一I/O 接口電路所組成的電子系統來講,其電源電壓一般也要由+5V,±15V或±12V等多路組成,而對較復雜的電子系統來講,實際用到的電源電壓就更多了。 目前主要由下述諸多電壓組合而成:+3.3V,+5V, ...… 查看全部問答∨ |
在網上找了很久,發現都不可用,我是移動的貓, 在執行SIM卡的STK菜單發送短信后,希望能接收到移動的狀態報告。 at+cnmi=1,1,0,1,1 at+cnmi=2,1,0,1,1 這兩個都不行嗎,在發完短信后,用它們去檢測設備是否接收到狀態報告,可什么也沒接到? ...… 查看全部問答∨ |
嵌入式Linux操作系統學習規劃 ARM+LINUX路線,主攻嵌入式Linux操作系統及其上應用軟件開發目標: (1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9) (2) 必須掌握一個嵌入式操作系統 (初步定為uclinux或linux,版本待定) (3 ...… 查看全部問答∨ |
|
請問如何混沌序列被量化為二進制序列的那個量化函數的定義是什么?要詳細的,講的盡量清楚些,謝謝高手專家了!!! 請問如何混沌序列被量化為二進制序列的那個量化函數的定義是什么?要詳細的,講的盡量清楚些,謝謝高手專家了!!!… 查看全部問答∨ |
|
我安裝好了SDK,在wince下新建了一個工程名之后,點擊build項下的set active platform 之后就出現死機, 不知道是什么原因,我已經重裝過evc了,還是這樣,我用的是wince4.2 evc4.0,我的那個步驟都是按照給好的文檔來的,步 ...… 查看全部問答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 03:58 編輯 3.6V 不說 還100ma 還不說 還15M 明擺著用拼學校老師的實力嗎 … 查看全部問答∨ |