版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)一交叉工具鏈的安裝了解交叉工具鏈的編譯過(guò)程及其使用。說(shuō)明:在實(shí)驗(yàn)中命令行提示符為“$”表示在主機(jī)上運(yùn)行,“#”表示在目標(biāo)板上運(yùn)行1、 ubuntu 12.04版2、 FS4412 平臺(tái)1、 如果要自己編譯工具鏈,從以下源碼crosstools-ng地址同時(shí)對(duì)每一個(gè)版本都有相應(yīng)的補(bǔ)丁我們盡量把這些補(bǔ)丁打上,這些補(bǔ)丁的地址是2、 解壓工具鏈壓縮包將第一天/工具/gcc-4.6.4.tar.xz 拷貝到toolchain 目錄下并解壓 $ tarxvfgcc-4.6.4.tar.xz3、 環(huán)境變量的添加修改文件/etc/bash.bashrc 添加如下內(nèi)容 export PATH=$PATH:/
2、home/linux/toolchain/gcc-4.6.4/bin重啟配置文件 $ source/etc/bash.bashrc$cd$ mkdir toolchain$ cd toolchain4、 工具鏈的測(cè)試這樣我們的交叉工具鏈就安裝好了$ arm-none-linux-gnueabi-gccv Using built-in specs.COLLECT_GCC=arm-none-linux-gnueabi-gccCOLLECT_LTO_WRAPPER=/home/david/Exynos4412/toolchain/gcc-4.6.4/bin/./libex ec/gcc/arm-ar
3、m1176jzfssf-linux-gnueabi/4.6.4/lto-wrapperTarget: arm-arm1176jzfssf-linux-gnueabiConfigured with: /work/builddir/src/gcc-4.6.4/configure -build=i686-build_pc-linux-gnu-host=i686-build_pc-linux-gnu-target=arm-arm1176jzfssf-linux-gnueabi-prefix=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnue
4、abi/gcc-4.6.4-with-sysroot=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot-enable-languages=c,c+-with-arch=armv6zk -with-crm1176jzf-s -with-tune=arm1176jzf-s -with-fpu=vfp-with-float=softfp -with-pkgversion='crosstool-NG hg+default-26
5、85dfa9de14 - tc0002'-disable-sjlj-exceptions -enable- cxa_atexit -disable-libmudflap -disable-libgomp-disable-libssp-disable-libquadmath-disable-libquadmath-support-with-gmp=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools-with-mpfr=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildto
6、ols-with-mpc=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools-with-ppl=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools-with-cloog=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools-with-libelf=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools-with-host-libstdcxx=
7、9;-static-libgcc-Wl,-Bstatic,-lstdc+,-Bdynamic-lm'-enable-threads=posix -enable-target-optspace -without-long-double-128 -disable-nls-disable-multilib-with-local-prefix=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc- 4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot -enable-c99 -ena
8、ble-long-longThread model: posixgcc version 4.6.4 (crosstool-NG hg+default-2685dfa9de14 - tc0002)實(shí)驗(yàn)二 u-boot 的燒寫(xiě)及使用了解 u-boot 的常用命令和 linux 內(nèi)核的引導(dǎo)。1、 ubuntu 12.04版2、 u-boot-2013.033、 FS4412 平臺(tái)4、 交叉編譯器 arm-none-linux-gnueabi-gcc1、 SD 啟動(dòng)盤(pán)制作a)將第一天/工具/sd_fusing 拷貝到 Linux 下b)將 SD 卡電腦并識(shí)別c)進(jìn)入 sdfuse_d 執(zhí)行如下操作 $
9、 sudo ./mkuboot.sh /dev/sdbd)在 SD 卡中創(chuàng)建目錄sdupdate 并把第一天/鏡像中的u-boot-fs4412.bin 拷貝到這個(gè)目錄下2、 u-boot 的燒寫(xiě)a)連接串口和板子,運(yùn)行串口通信程序(putty 第一天工具中)選擇右上角的”Serial”,然后點(diǎn)擊左下角的”Serial”按照自己的主機(jī)的情況選擇 COM 口其他必須一直,然后點(diǎn)擊 open 打開(kāi)串口b)關(guān)閉開(kāi)發(fā)板電源,將撥碼開(kāi)關(guān) SW1 調(diào)至(1000)(SD 啟動(dòng)模式)后打開(kāi)電源c)將剛才做好的 SD 啟動(dòng)盤(pán)SD 卡插槽d)重新打開(kāi)開(kāi)發(fā)板能夠看到如下界面在倒計(jì)時(shí)時(shí)按任意鍵e)燒寫(xiě)在終端上執(zhí)行
10、sdfuse flashall等待終端無(wú)輸出是表示燒寫(xiě)結(jié)束f)關(guān)閉開(kāi)發(fā)板電源,將撥碼開(kāi)關(guān) SW1 調(diào)至 0110(EMMC 啟動(dòng)模式)后打開(kāi)電源可以看到如下界面表示燒寫(xiě)成功在倒計(jì)時(shí)時(shí)按任意鍵3、 通過(guò)網(wǎng)絡(luò)加載內(nèi)核和文件系統(tǒng)a)將第一天/鏡像文件/uImage 拷貝到 ubuntu 的/tftpboot 下b)將第一天/鏡像文件/rootfs.tar.xz 拷貝到 ubuntu 的 /source 下并解壓c)將第一天/鏡像文件/exynos4412-fs4412.dtb 拷貝到 ubuntu 的 /tftpboot 下d)修改虛擬機(jī) nfs 配置文件/etc/exports,添加如下內(nèi)容并重啟
11、 nfs 服務(wù) /source/rootfs*(rw,sync,no_subtree_check,no_root_squash)e)重新驅(qū)動(dòng) nfs 服務(wù) $ sudo /etc/init.d/nfs-kernel-server restartf)設(shè)置啟動(dòng)參數(shù)#setenv serverip 20#setenv ipaddr 33#setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000#setenvbootarg
12、sroot=/dev/nfsnfsroot=20:/source/rootfsrw注意:20 對(duì)應(yīng)Ubuntu 的 ip33 對(duì)應(yīng)板子的 ip這兩個(gè) ip 應(yīng)該根據(jù)自己的實(shí)際情況適當(dāng)修改g)啟動(dòng)開(kāi)發(fā)板看到如下現(xiàn)象表示成功通過(guò)網(wǎng)絡(luò)掛載:這是可以輸入一些 Linux令測(cè)試console=ttySAC2,115200init=/linuxrc ip=33# saveenv4、 從 EMMC 加載內(nèi)核和文件系統(tǒng)a)拷貝第一天/鏡像文件/ramdisk.img 拷貝到虛擬機(jī)/tftpboot 目錄下b)燒寫(xiě)內(nèi)核鏡像到
13、 EMMC 上c)燒寫(xiě)設(shè)備樹(shù)文件到 EMMC 上d)燒寫(xiě)文件系統(tǒng)鏡像到 EMMC 上e)設(shè)置啟動(dòng)參數(shù)f)重新啟動(dòng)開(kāi)發(fā)板,u-boot 自動(dòng)加載、執(zhí)行內(nèi)核# setenv bootcmd movi read kernel 41000000;movi read dtb 42000000;movi read rootfs 43000000 300000;bootm 41000000 43000000 42000000# saveenv# tftp41000000ramdisk.img# moviwriterootfs41000000300000# tftp41000000 exynos4412-fs
14、4412.dtb# moviwritedtb41000000# tftp41000000uImage# moviwritekernel410000005、 其令練習(xí)6、 交叉編譯和交叉調(diào)試a)將 u-boot 啟動(dòng)參數(shù)修改為網(wǎng)絡(luò)啟動(dòng)#setenv serverip 20#setenv ipaddr 33#setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000#setenvbootargsroot=/dev/nfs
15、nfsroot=20:/source/rootfsrw注意:20 對(duì)應(yīng)Ubuntu 的 ip33 對(duì)應(yīng)板子的ip這兩個(gè) ip 應(yīng)該根據(jù)自己的實(shí)際情況適當(dāng)修改b)編輯程序源碼 myapp.c(自己寫(xiě)一個(gè)簡(jiǎn)單的 c 程序)c)交叉編譯后到/source/rootfs(編譯時(shí)添加選項(xiàng)-g)$arm-none-linux-gnueabi-gcc myapp.c o myapp g$ cp myapp/source/rootfsd)gdbserver 到/source/rootfs/bin(gdbserver 在交叉工具鏈中找,路徑為:/
16、home/linux/toolchain/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/debug-root/bin)e)在開(kāi)發(fā)板上如下運(yùn)行# gdbserver33:12345myapp &f)在主機(jī)上運(yùn)行交叉調(diào)試器$ arm-none-linux-gnueabi-gdbmyappg)在交叉調(diào)試器下和開(kāi)發(fā)板 gdbserver 建立連接(gdb)targetremote33:12345設(shè)置斷點(diǎn),輸入命令 c 開(kāi)始調(diào)試程序(注意觀察串口輸出)console=ttySAC2,115200init=/linu
17、xrc ip=33# saveenv實(shí)驗(yàn)三 u-boot-2013.01 的移植了解 u-boot 的代碼結(jié)構(gòu)及移植方法。1、 ubuntu 10.10版2、 u-boot-2013.013、 FS_4412 平臺(tái)(EXYNOS 4412)4、 交叉編譯器 arm-none-linux-gnueabi-gcc立自己的平臺(tái)1、源碼我們可以在下面這個(gè)上最新的和以前任一版本的 ubootftp:/ftp.denx.de/pub/u-boot/2、 解壓 uboot 源碼并進(jìn)入目錄3、 指定交叉編譯工具鏈 $ vim Makefile把改為ifeq(arm,$(ARCH)PILE
18、 ?= arm-none-linux-gnueabi-#endififeq ($(HOSTARCH),$(ARCH)PILE ?=#endif$ tarxvfu-boot-2013.01.tar.bz2$ cd u-boot-2013.014、 指定CPU我們用的 CPU 是 exynos 4412查看 u-boot 源碼該 CPU是否已支持U-boot 已支持,見(jiàn) arch/arm/crmv7/exynos/5、 指定BOARD找一個(gè)最類似的 board 配置修改,這里我們參考的是 board/samsung/origen/#vimboards.cfg參考o(jì)rigenarmarmv7orig
19、ensamsungexynos并在后面新增fs4412armarmv7fs4412samsungexynos$ cp-rfboard/samsung/origen/board/samsung/fs4412$ mvboard/samsung/fs4412/origen.cboard/samsung/fs4412/fs4412.c$ vimboard/samsung/fs4412/Makefile修改 origen.o為fs4412.o$ cpinclude/configs/origen.hinclude/configs/fs4412.h$ viminclude/configs/fs4412.h修
20、改#defineCONFIG_SYS_PROMPT "ORIGEN #"為#defineCONFIG_SYS_PROMPT "fs4412 #"修改#define CONFIG_IDENT_STRING for ORIGEN為#define CONFIG_IDENT_STRINGforfs44126、 編譯 u-boot編譯完成后生成的 u-boot.bin 就是可執(zhí)行的鏡像文件。但是該文件還不能在我們板子上運(yùn)行,我們需要對(duì) u-boot 源代碼進(jìn)行相應(yīng)的修改。二、實(shí)現(xiàn)能看到串口終端信息1、 確認(rèn)第一條指令有運(yùn)行到(點(diǎn)燈法)l在 arch/arm/crm
21、v7/start.S 134行后添加點(diǎn)燈程序l添加三星加密方式exynos 需要三星提供的初始引導(dǎo)加密后,我們的 u-boot,才能被引導(dǎo)運(yùn)行 $cpsdfuse_qu-boot-2013.01-rf注:sdfuse_q 三星提供的加理 $cp CodeSign4SecureBootu-boot-2013.01-rf注:CodeSign4SecureBoot 三星提供的安全啟動(dòng)方式#if 1ldr r0, =0x11000c40 GPK2_7 led2 ldr r1, r0bic r1, r1, #0xf0000000 orr r1, r1, #0x10000000 str r1, r0ldr
22、 r0, =0x11000c44 mov r1,#0xffstr r1, r0#endif$ make distclean$ makefs4412_config$ makel修改 Makefile修改實(shí)現(xiàn) sdfuse_q 的編譯在下添加注意是 tab 鍵縮進(jìn)的,否則 makefile 編譯報(bào)錯(cuò)注意如果執(zhí)行了 make distclean 需重新拷貝 CodeSign4SecureBootl拷貝編譯注:build.sh方式完成自動(dòng)添加加密方式,$cp build.sh u-boot-2013.01$chmod777u-boot-2013.01/ build.sh$ ./buildsh#./mk
23、ubootsplit -b 14336 u-boot.bin bl2 +make -C sdfuse_q/#cp u-boot.bin u-boot-4212.bin #cp u-boot.bin u-boot-4412.bin #./sdfuse_q/add_sign ./sdfuse_q/chksum ./sdfuse_q/add_paddingrm bl2a*echo$(obj)u-boot.bin:$(obj)u-boot$(OBJCOPY) $OBJCFLAGS -O binary $< $(BOARD_SIZE_CHECK)$vim Makefile編譯生成所需文件 u-bo
24、ot_fs4412.bin燒寫(xiě)新的 u-boot_fs4412.bin復(fù)位,發(fā)現(xiàn)燈有點(diǎn)亮,說(shuō)明我們的 u-boot 有運(yùn)行到2、 實(shí)現(xiàn)串口輸出修改 lowlevel_init.S 文件 $vimboard/samsung/fs4412/lowlevel_init.Sl 添加臨時(shí)棧在 lowlevel_init:后添加 ldrsp,=0x02060000 use iRom stack in bl2l 添加關(guān)閉看門(mén)狗代碼在 beqwakeup_reset后添加#if 1 /*for close watchdog */* PS-Hold high */ldr r0, =0x1002330c ldr
25、r1, r0orr r1, r1, #0x300 str r1, r0ldrr0, =0x11000c08 ldr r1, =0x0str r1, r0/* ClearMASK_WDT_RESET_REQUEST*/l添加串口初始化代碼注釋掉 trustzone 初始化注釋掉下的重新編譯 u-boot燒寫(xiě)新的 u-boot_fs4412.bin復(fù)位會(huì)看到串口信息$ ./build.shbl tzpc_initbluart_asm_init在 uart_asm_init: 的strr1, r0, #EXYNOS4_GPIO_A1_CON_OFFSET后添加ldr r0, =0x10030000l
26、dr r1, =0x666666ldr r2, =CLK_SRC_PERIL0_OFFSETstrr1, r0, r2ldr r1, =0x777777ldr r2, =CLK_DIV_PERIL0_OFFSETstrr1, r0, r2ldr r0, =0x1002040c ldr r1, =0x00str r1, r0#endif三、網(wǎng)卡移植1、 添加網(wǎng)絡(luò)初始化代碼 $vimboard/samsung/fs4412/fs4412.c在 struct exynos4_gpio_part2 *gpio2; 后添加#ifdef CONFIG_DRIVER_DM9000#define EXYNOS
27、4412_SROMC_BASE 0X12570000#define DM9000_Tacs (0x1) #define DM9000_Tcos (0x1) #define DM9000_Tacc (0x5) #define DM9000_Tcoh (0x1)#define DM9000_Tah(0xC)#define DM9000_Tacp(0x9)#define DM9000_PMC(0x1)struct exynos_sromc unsigned int bw;unsigned int bc6;/* s5p_config_sromc() - select the proper SROMC
28、Bank and configure the* band width control and bank control registers* srom_bank- SROM* srom_bw_conf- SMC Band witdh reg configuration value* srom_bc_conf- SMC Bank Control reg configuration value*/void exynos_config_sromc(u32 srom_bank, u32 srom_bw_conf, u32 srom_bc_conf)unsigned int tmp;struct exy
29、nos_sromc *srom = (struct exynos_sromc *)(EXYNOS4412_SROMC_BASE);/* Configure SMC_BW register to handle proper SROMC bank */tmp = srom->bw;tmp&= (0xF << (srom_bank * 4);tmp |= srom_bw_conf;srom->bw = tmp;/* Configure SMC_BC register */srom->bcsrom_bank = srom_bc_conf;static void d
30、m9000aep_pre_init(void)unsigned int tmp;unsigned char smc_bank_num = 1;unsigned intsmc_bw_conf=0;unsigned intsmc_bc_conf=0;/* gpio configuration */writel(0x00220020, 0x11000000 + 0x120);writel(0x00002222, 0x11000000 + 0x140);/* 16 Bit bus width */writel(0x22222222, 0x11000000 + 0x180);writel(0x0000F
31、FFF, 0x11000000 + 0x188);writel(0x22222222, 0x11000000 + 0x1C0);writel(0x0000FFFF, 0x11000000 + 0x1C8);writel(0x22222222, 0x11000000 + 0x1E0);writel(0x0000FFFF, 0x11000000 + 0x1E8);smc_bw_conf &= (0xf<<4);smc_bw_conf |= (1<<7) | (1<<6) | (1<<5) | (1<<4);smc_bc_conf
32、= (DM9000_Tacs << 28)| (DM9000_Tcos << 24)| (DM9000_Tacc << 16)| (DM9000_Tcoh << 12)| (DM9000_Tah << 8)| (DM9000_Tacp << 4)在 gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);后添加在文件末尾添加2、 修改配置文件添加網(wǎng)絡(luò)相關(guān)配置修改為#undef CONFIG_CMD_PING$ viminclude/configs/fs4412.h#i
33、fdef CONFIG_CMD_NET int board_eth_init(bd_t *bis)int rc = 0;#ifdef CONFIG_DRIVER_DM9000rc = dm9000_initialize(bis); #endifreturn rc;#endif#ifdef CONFIG_DRIVER_DM9000dm9000aep_pre_init();#endif| (DM9000_PMC);exynos_config_sromc(smc_bank_num,smc_bw_conf,smc_bc_conf);#endif #def ineCONFIG_CMD_PING修改 #u
34、ndef CONFIG_CMD_NET為 #def ineCONFIG_CMD_NET在文件末尾 #endif/* CONFIG_H */前面添加3、 重新編譯 u-boot $ ./build.sh#ifdef CONFIG_CMD_NET #define CONFIG_NET_MULTI#define CONFIG_DRIVER_DM90001#define CONFIG_DM9000_BASE0x05000000#define DM9000_IOCONFIG_DM9000_BASE#define DM9000_DATA(CONFIG_DM9000_BASE + 4) #define CO
35、NFIG_DM9000_USE_16BIT#define CONFIG_DM9000_NO_SROM1#define CONFIG_ETHADDR11:22:33:44:55:66#define CONFIG_IPADDR00#define CONFIG_SERVERIP20#define CONFIG_GATEWAYIP#define CONFIG_NETMASK#endif燒寫(xiě)新的 u-boot_fs4412.bin復(fù)位后 # ping20四、FLASH 移植(EMMC)1、
36、初始化 EMMC在 pinmux.o 后添加 movi.o修改板級(jí)文件 $vimboard/samsung/fs4412/fs4412.c在 #include <asm/arch/mmc.h>后面添加在 #ifdef CONFIG_GENERIC_MMC后面添加u32 sclk_mmc4;/*clock source for emmc controller*/#define REGMY(x) (*(volatile u32 *)(x)#include <asm/arch/clk.h>#include "origen_setup.h"$cpmovi.c
37、arch/arm/crmv7/exynos/$vimarch/arm/crmv7/exynos/Makefile#define CLK_SRC_FSYSREGMY(EXYNOS4_CLOCK_BASE +CLK_SRC_FSYS_OFFSET)#define CLK_DIV_FSYS3 REGMY(EXYNOS4_CLOCK_BASE +CLK_DIV_FSYS3_OFFSET)int emmc_init()u32 tmp;u32 clock;u32 i;/* setup_hsmmc_clock */* MMC4 clock src = SCLKMPLL */tmp = CLK_SRC_FSY
38、S & (0x000f0000);CLK_SRC_FSYS = tmp | 0x00060000;/* MMC4 clock div */tmp = CLK_DIV_FSYS3 & (0x0000ff0f);clock = get_pll_clk(MPLL)/1000000;for(i=0 ; i<=0xf; i+)sclk_mmc4=(clock/(i+1);if(sclk_mmc4 <= 160) /200CLK_DIV_FSYS3 = tmp | (i<<0);break;emmcdbg("mjdbg sclk_mmc4:%d MHZ;
39、mmc_ratio: %dn",sclk_mmc4,i);sclk_mmc4 *= 1000000;/* MMC4 EMMC GPIO CONFIG* GPK00SD_4_CLK* GPK01SD_4_CMD* GPK02SD_4_CDn* GPK03:6SD_4_DATA0:3*/writel(readl(0x11000048)&(0xf),0x11000048); /SD_4_CLK/SD_4_CMD pull-downenablewritel(readl(0x11000040)&(0xff),0x11000040);/cdn set to be outputwr
40、itel(readl(0x11000048)&(3<<4),0x11000048); /cdn pull-down disablewritel(readl(0x11000044)&(1<<2),0x11000044); /cdn output 0 to shutdown the emmcpowerwritel(readl(0x11000040)&(0xf<<8)|(1<<8),0x11000040);/cdn set to be outputudelay(100*1000);writel(readl(0x11000044)
41、|(1<<2),0x11000044); /cdn output 1writel(0x03333133, 0x11000040);writel(0x00003FF0, 0x11000048);writel(0x00002AAA, 0x1100004C);#ifdef CONFIG_EMMC_8Bit將 int board_mmc_init(bd_t *bis)函數(shù)內(nèi)容改寫(xiě)為在末尾添加#ifdef CONFIG_BOARD_LATE_INIT#include <movi.h>intchk_bootdev(void)/mj for boot device checkchar
42、 run_cmd100; struct mmc *mmc;int board_mmc_init(bd_t *bis)int i, err;#ifdef CONFIG_EMMC err = emmc_init();#endifreturn err;writel(0x04444000, 0x11000060); writel(0x00003FC0, 0x11000068); writel(0x00002AAA, 0x1100006C);#endif#ifdef USE_MMC4 smdk_s5p_mshc_init(); #endifint boot_dev = 0;int cmp_off = 0
43、x10;ulongstart_blk,t;mmc = find_mmc_device(0);if (mmc = NULL)printf("There is no eMMC card, Booting device is SD cardn");boot_dev = 1;return boot_dev;start_blk = (24*1024/MOVI_BLKSIZE);t = 0x10;sprintf(run_cmd,"emmc open 0");mand(run_cmd, 0);sprintf(run_cmd,"mmc read0 %lx %l
44、x %lx",CFG_PHY_KERNEL_BASt);mand(run_cmd, 0);/* switch mmc to normal paritition */sprintf(run_cmd,"emmc close 0");mand(run_cmd, 0);return 0;2、 添加相關(guān)命令修改 Makefile在后添加COBJS-$(CONFIG_CMD_MMC) += cmd_mmc_fdisk.oCOBJS-$(CONFIG_CMD_MOVINAND) += cmd_movi.oCOBJS-$(CONFIG_CMD_MMC) += cmd_mmc.o$
45、 vimcommon/Makefile$ cpcmd_movi.c common/$ cpcmd_mmc.c common/$ cpcmd_mmc_fdisk.ccommon/int board_late_init (void)int boot_dev =0 ; char boot_cmd100;boot_dev = chk_bootdev(); if(!boot_dev)printf("nnChecking Boot Mode . EMMC4.41n");return 0;#endif添加驅(qū)動(dòng)修改 Makefile添加3、 添加 EMMC 相關(guān)配置添加#define CO
46、NFIG_EVT11/* EVT1 */ #ifdef CONFIG_EVT1#define CONFIG_EMMC44_CH4 /eMMC44_CH4 (OMPIN5:1 = 4)#ifdef CONFIG_SDMMC_CH2 #define CONFIG_S3C_HSMMC #undef DEBUG_S3C_HSMMC #define USE_MMC2#endif#ifdef CONFIG_EMMC44_CH4 #define CONFIG_S5P_MSHC$viminclude/configs/fs4412.hCOBJS-$(CONFIG_S5P_MSHC) += s5p_mshc.o$
47、vimdrivers/mmc/Makefile$ cpmmc.cdrivers/mmc/$ cps5p_mshc.cdrivers/mmc/$ cpmmc.h include/$ cpmovi.h include/$ cps5p_mshc.hinclude/4、 重新編譯 u-boot $ ./build.sh燒寫(xiě)新的 u-boot_fs4412.bin復(fù)位后# mmc info#define CONFIG_EMMC1#define USE_MMC4/* #define CONFIG_EMMC_8Bit */ #define CONFIG_EMMC_EMERGENCY/*#define emm
48、cdbg(fmt,args. ) printf(fmt ,#args) */for emmc debug#define emmcdbg(fmt,args. )#endif#endif /*end CONFIG_EVT1*/ #define CONFIG_CMD_MOVINAND#define CONFIG_CLK_1000_400_200#define CFG_PHY_UBOOT_BASECONFIG_SYS_SDRAM_BASE + 0x3e00000 #define CFG_PHY_KERNEL_BASECONFIG_SYS_SDRAM_BASE + 0x8000#define BOOT_
49、MMCSD0x3 #define BOOT_EMMC43 0x6 #define BOOT_EMMC441 0x7#define CONFIG_BOARD_LATE_INIT實(shí)驗(yàn)四內(nèi)核的配置和編譯了解內(nèi)核的編譯過(guò)程及配置選項(xiàng)的內(nèi)容說(shuō)明:在本系統(tǒng)移植課程實(shí)驗(yàn)中命令行提示符 “$”表示是在主機(jī)上執(zhí)行,“#”表示在目標(biāo)板執(zhí)行主機(jī):ubuntu 12.04版目標(biāo)機(jī):FS4412 平臺(tái)交叉編譯工具:arm-none-linux-gnueabi-gcc解壓內(nèi)核將 linux-3.14.tar.xz 拷貝到/home/linux 下并解壓修改內(nèi)核頂層目錄下的 Makefile修改:為:導(dǎo)入默認(rèn)配置配置內(nèi)核$
50、 makeconfig$ make exynos_defconfigARCH?= armPILE ?= arm-none-linux-gnueabi-ARCH?= $(SUBARCH)PILE ?= $(PILE:"%"=%)$ vim Makefile$tar xvf linux-3.14.tar.xz$ cd linux-3.14該命令執(zhí)行時(shí)會(huì)彈出一個(gè)菜單,我們可以對(duì)內(nèi)核進(jìn)行詳細(xì)的配置。這里我們先查看一下,內(nèi)核都提供了那些功能!編譯內(nèi)核通過(guò)上述操作我們能夠在 arch/arm/boot 目錄下生成一個(gè) uImage 文件,這就是經(jīng)過(guò)壓縮的內(nèi)核鏡像。如果編譯過(guò)程中提示缺少
51、 mkimage 工具,需將第二天編譯的tools/mkimage 拷貝到 ubuntu 的/usr/bin 目錄下uboot源碼中的修改設(shè)備樹(shù)文件生成設(shè)備樹(shù)文件,以參考板 origen 的設(shè)備數(shù)文件為參考。添加新文件需修改 Makefile 才能編譯$ vim arch/arm/boot/dts/Makefile在下添加如下內(nèi)容編譯設(shè)備樹(shù)文件拷貝內(nèi)核和設(shè)備樹(shù)文件到/tftpboot 目錄下修改 uboot 啟動(dòng)參數(shù)$ cp arm/arm/boot/uImage /tftpboot$ cp arch/arm/boot/dts/exynos4412-fs4412.dtb/tftpboot/$
52、make dtbsexynos4412-fs4412.dtb exynos4412-origen.dtb $ cp arch/arm/boot/dts/exynos4412-origen.dts arch/arm/boot/dts/exynos4412-fs4412.dts$ cp u-boot-2013.01/tools/mkimage /usr/bin$ make uImageSystem Type ->(2) S3C UART to use for low-level messages重啟板子在系統(tǒng)倒計(jì)時(shí)是按任意鍵結(jié)束啟動(dòng),輸入如下內(nèi)容修改 uboot 環(huán)境變量:注意:192.16
53、8.9.120 對(duì)應(yīng)Ubuntu 的 ip33 對(duì)應(yīng)板子的 ip這兩個(gè) ip 應(yīng)該根據(jù)自己的實(shí)際情況適當(dāng)修改重啟開(kāi)發(fā)板查看現(xiàn)象#setenv serverip 20#setenv ipaddr 33#setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 42000000#setenvbootargsroot=/dev/nfsnfsroot=20:/source/rootfsrw console=ttySAC2,115200init=/linuxrc ip=33# saveenv實(shí)驗(yàn)五網(wǎng)卡驅(qū)動(dòng)的移植通過(guò)上面的實(shí)驗(yàn)我們能夠獲得一個(gè)內(nèi)核,但是這個(gè)內(nèi)核只是一個(gè)最基本的配置,很多的功能并沒(méi)有包含。網(wǎng)卡是最常用的設(shè)備,這里我們需要完成網(wǎng)卡驅(qū)動(dòng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級(jí)日記大全集10篇
- Theaflavin-Standard-生命科學(xué)試劑-MCE
- Unit 6 Section B (2a-2e) 預(yù)習(xí)清單 人教版英語(yǔ)八年級(jí)上冊(cè)
- 七年級(jí)生物下冊(cè)4.3.2發(fā)生在肺內(nèi)的氣體交換課后練習(xí)新版新人教版
- 2024-2025學(xué)年高中物理第十章熱力學(xué)定律2熱和內(nèi)能學(xué)案新人教版選修3-31
- 六年級(jí)科學(xué)上冊(cè)第二單元形狀與結(jié)構(gòu)6建高塔教案教科版
- 2024年食品級(jí)纖維素醚項(xiàng)目建議書(shū)
- 2023屆新高考新教材化學(xué)人教版一輪學(xué)案-第六章第3講 電解池、金屬的腐蝕與防護(hù)
- 鹽城師范學(xué)院《證券投資學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024北京市房屋租賃合同經(jīng)紀(jì)機(jī)構(gòu)代理成交版
- 水電解質(zhì)、酸堿平衡紊亂--ppt課件
- 建筑工程項(xiàng)目勞務(wù)實(shí)名制管理方案
- 頂管及盾構(gòu)施工技術(shù)及特點(diǎn)(62頁(yè))
- 幼兒園中班語(yǔ)言《啪啦啪啦-碰》微課件
- 物業(yè)公司業(yè)主手冊(cè)范本
- 高中研究性學(xué)習(xí)如何選擇、確立研究性學(xué)習(xí)課題PPT通用PPT課件
- 6S管理知識(shí)圖解
- 高速鐵路ZPW-2000軌道電路
- 縣國(guó)家稅務(wù)局文件材料歸檔范圍及文書(shū)檔案保管期限表
- 橋梁荷載試驗(yàn)講座
- 醫(yī)師定期考核表格參考模板
評(píng)論
0/150
提交評(píng)論