s3c2440交叉編譯工具
㈠ 如何加nettools交叉編譯好,使它用於S3C2440
首先需要其源代碼,然後下載相應的交叉編譯工具鏈,安裝完成後世返再進行編譯。一般需要修改下配置再編譯,很多選項需要嘗試進行。在這過程中可能需要其它庫搜拍飢,賀尺還需要逐一下載編譯。
㈡ linux內核移植需要哪些知識點
1、獲得內核源碼:從Linux內核的官網可獲得相應的內核源碼,這里以2.6.31.1為例。x0dx0ax0dx0a2、解壓源碼,進入目錄:x0dx0a#tar xjvf linux- 2.6.31.1.tar.bz2x0dx0a#cd linux-2.6.31.1x0dx0ax0dx0a3、修改Makefile的183 行:x0dx0aARCH ?= arm <—指定系統硬體架構x0dx0aCROSS_COMPILE ?= arm-linux- <—指定交叉編譯器x0dx0ax0dx0a4、修改時鍾:x0dx0a修改arch/arm/mach-s3c2440/mach-smdk2440.c 的163行x0dx0astatic void __init smdk2440_map_io(void)x0dx0a{x0dx0as3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));x0dx0as3c24xx_init_clocks(12000000); <—輸入時鍾為12MHzx0dx0as3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));x0dx0a x0dx0a}x0dx0a這個一定要設置對,否則會列印出亂碼。x0dx0ax0dx0a5、修改機器碼(根據實際情況,這個要和bootloader的匹配):x0dx0a修改:arch/arm/tools/mach-types的379 行:x0dx0as3c2440 ????????? XXX <—後面那個數就是機器碼 (我用的天嵌開發板的機器碼是168)x0dx0a x0dx0a6、配置:x0dx0a#make menuconfig <—進入圖形化配置界面x0dx0a在配置菜單中選擇這一項:"Load an Alternate Configuration File" ,輸入2440的默認配置文件:arch/arm/configs/s3c2410_defconfig ,這個文件就是 S3C24XX 系列開發板板級支持包(BSP)然後選擇 OK,按回車。x0dx0a進入"System Type"選項單,裡面的選項保持默認在"S3C24XX Machine"選項中只配置這幾項(其他的選項取消):x0dx0aS3C2410 Machine --->x0dx0a[*] SMDK2410/A9M2410x0dx0aS3C2440 Machine --->x0dx0a[*] SMDK2440x0dx0a[*] SMDK2440 with S3C2440 cpu moudlex0dx0ax0dx0a配置完後,回到主菜單,選擇這一項"Save an Alternate Configuration File" ,輸入要保存的 x0dx0a配置文件名稱:.config (默認)或自己取名:TQ2440_config,退出,編譯內核: #make zImagex0dx0a說明:以後移植過程中的配置、編譯,都是按這個步驟進行,但是只需要保存一次配置文件,以後就不需要再保存配置文件了,配置完後可以直接退出。x0dx0a編譯完後,會在arch/arm/boot下生成zImage內核鏡像文件,可以修改該目錄下的Makefile, 在第57行下面添加:仿消碼x0dx0a@cp -f arch/arm/boot/zImage zImagex0dx0a@echo Kernel: $@ is ready 'x0dx0a x0dx0a這樣執行make zImage後,就把生成的zImage拷到內核根目錄下。x0dx0a如果希望在在執行make distclean時,也同時把zImage刪除,可以修改內核根目錄下Makefile 的第備哪1247行,在後面加上:x0dx0a-type f -print | xargs rm -f rm zImagex0dx0a把 zImage 鏡像燒進 NandFlash 跑一下,看是否正常列印出信息,如果第一步能正常引導內核,那就開始進行。然後添加驅動。x0dx0ax0dx0a注意,橋拿系統啟動最後可能會出現這個錯誤:x0dx0aKernel panic - not syncing: Attempted to kill init!x0dx0a然後出列印出一些很亂的東西。因為用4.x.x版本的交叉編譯器使用EABI,但內核默認是不支持EABI編譯的,所以編譯出的系統會報錯,但用3. x.x版本的編譯器就不會出現這個問題。解決辦法是,配置內核支持EABI編譯:x0dx0aKernel Features --->x0dx0a[*] Use the ARM EABI to compile the kernelx0dx0a[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA) 6
㈢ s3c2440 或者 c語言問題
你實際定義了兩個變數i,一個是全局變數i,段族一個是局部變數i,當你運行main函數,局部變數i屏蔽全局變數i,也就是說全局變數不起陸絕作用,全局變數才起作用。而你用串列輸出握悉弊i的值,你輸出的是全局變數i,但是mmain里操作的是局部變數i,當然顯示沒有變數。當你定義到main裡面,就是只有一個局部變數i了,串列輸出當然在變化。
㈣ 編譯u-boot時printf未定義是什麼意思
用函數指針, 把printf的蘆賣輪地址強轉成 函數類型 再調用 , 具體地址用命令能查 還配宴是開發手冊上有 我陪信就忘了
㈤ 我是天嵌s3c2440的板子,現在Linux移植,一直按廠家手冊做的,可是make menuconfig的時候總是出現如下錯誤
/bin/sh: line 1: gcc: command not found
注意提示,是 gcc 這個命令未找到,而不是 arm-linux-gcc 這個命令未找到。
而且再看第一行提示
HOSTCC scripts/basic/fixdep
這行裡面的 HOSTCC ,HOST 一般對於 Linux 來說是本地的東西意思,也就是說這行用的是當前系統使用的 cc (這個 cc 是 C Compiler 的意思,gcc 命令是 GNU Compiler Collection 的 cc )。也就是說,當前系統的 gcc (一般習慣下沒有前綴的 gcc 就是本地 GCC )沒有找到。
所以充分表明你根本不會 Linux 就去弄嵌入式……
㈥ s3c2440的timer程序,我用交叉編譯中的arm-linux-objmp編譯出來的反匯編代碼,想看看程序是如何跳轉的
你好,請問你是怎麼編譯出這個反匯編代碼,
㈦ 嵌入式軟體開發要學什麼推薦一下書籍
《嵌入式Linux應用開發完全手冊》以S3C2410、S3C2440開發板為例,從分析硬體上電執行的第一條指令開始,到構造出一個類似PDA、基於Linux的桌面GUI系統,帶領讀者學習、掌握從最底層到最高層的軟體編寫方法。
《嵌入式Linux應用開發完全手冊》全面介紹了嵌入式Linux系統開發過程中,從底層系統支持到上層GUI應用的方方面面,內容涵蓋Linux操作系統的安裝及相關工具的使用、配置,嵌入式編程所橋滾需要的基礎知識(交叉編譯工具的選項設置、Makefile語法、ARM匯旅消凱編指令等),硬體部件的使用及編程(囊括了常見硬體,比如UART、I*IC、LCD等),UBoot、Linux內核的分析、配置和移植,根文件系統的構造(包括移植busybox、glibc、製作映象文件等),內核調試技術(比如添加kgdb補丁、棧回溯等),驅動程序編寫及移植(LED、按鍵、擴展串口、網卡、硬碟、SD卡、LCD和USB等),GUI系統的移植(包拆喚含兩個GUI系統:基於Qtopia和基於X),應用程序調試技術。
《嵌入式Linux應用開發完全手冊》從最簡單的點亮一個LED開始,由淺入深地講解,使讀者最終可以配置、移植、裁剪內核,編寫驅動程序,移植GUI系統,掌握整個嵌入式Linux系統的開發方法。
1、Linux基礎
安裝Linux操作系統Linux文件系統Linux常用命令Linux啟動過程詳解。
2、Shell編程基礎
Shell簡介認識後台程序Bash編程熟悉Linux系統下的編輯環境。
3、Linux下的C編程基礎
linuxC語言環境概述G使用方法Gdb調試技術。
4、嵌入式系統開發基礎
嵌入式系統概述交叉編譯配置TFTP服務配置NFS服務下載Bootloader和內核嵌入式Linux應用軟體開發。
4、嵌入式系統移植
Linux內核代碼平台相關代碼分析ARM平台介紹平台移植的關鍵技術移植Linux內核到ARM平台了解移植的概念能夠移植Linux內核移植Linux2.6內核到ARM9開發板。
5、嵌入式Linux下串口通信串列I/O的基本概念嵌入式Linux應用軟體開發流程Linux系統的文件和設備。
6、嵌入式系統中多進程程序設計Linux系統進程概述嵌入式系統的進程特點進程操作守護進程相關的系統調用了解Linux系統中進程的概念。
網上很多~可以先從虛擬機玩起。
A.一般安裝一個VMWARE虛擬機,再從網上下載個RedHat9.0的光碟鏡像。
這個比較適合入門linux,當然也有Cygwin的,不過不推薦。
B.然後就可以按照上面的步驟學起來了,等把linux的shell和g,gdb,系統編程,gui(QT,miniGUI,MicroWin等等)玩好之後,可以買個開發板了,這里就不說明具體品牌了,2410/2440開發板很多的。
C.然後開始玩開發板,常用的代碼編輯工具有UE。
還有代碼比較工具。
當然還有ADS1.2,這個是必不可少的,可以先把ARM開發板當單片機開發板玩!先熟悉具體硬體設備的使用,如UART,SPI,LCD控制器等,最後再去玩Bootloader,系統移植,內核,文件系統,應用編程,驅動編程。。。
㈧ ubuntu 12.04內核3.2.0-60搭建ARM S3C2440 交叉編譯環境要選擇哪個版本的ARM-LINUX-GCC啊謝謝
交叉編譯器與ubuntu上的gcc版本可以不一樣的,交叉編譯器我用arm-linux-gcc-4.3.2正常。
㈨ arm嵌入式linux qt入門問題請教
1、qt-x11是建立在X11圖開庫上的,X11圖形庫又是建軍在FRAMBUFFER上的,FRAMBUFFER是linux內核的圖形庫,X11系統資源需求大,不能用於嵌入式,所以qt-embedded產生了,它不是建立在X11圖形庫上的,它是直接建立在FRAMBUFFER上的,占系統資源極少,可以在嵌入式上使用。qtopia-core這個概念是相對於qtopia提出的。它就是qt-embedded。而qtopia是QT公司的一個嵌入式桌面系統,目前已停止開發了。
2、如果arm上沒有qt庫,不能運行QT程序,必須把相應的QT庫按裝到ARM板上。
3、qmake產生makefile,make根據makefile調用gcc進行編譯。
4、qt-embedded-linux-opensource-src-4.4.3.tar.gz是用在嵌入式上的QT開發庫。用法與qt-4.4.3-x11版的用法一樣。
5、沒有辦法模擬,只能先進行qt-embedded的移植工作。但是開發qt-embedded程序時,到是可以在PC機上先用qvfb模擬調試的。
6、qt-embedded庫先交叉編譯,完成後下載到開發板上,以後開發應用程序時,qt庫不用再下載的。
7、寫qt程序需要4.0版以上的交叉編譯器。網上可以下載現成。
8、這是三個不同版本的gcc交叉編譯器,都老了。目前至少應該使用gcc 4.0以上的。
9、肯定是不行的。
10、呵呵,我也是從新手過來的。也問過類似的小白問題。