zoukankan      html  css  js  c++  java
  • Davinci DM6446开发攻略——u-boot-1.3.4移植(1) 分类: DSP 2013-07-22 16:29 306人阅读 评论(0) 收藏

    UBOOT的版本更新速度比较快,截止今天,稳定正式的版本是u-boot-2009.11-rc2,而TI最新的EVM开发包里的UBOOT1.2.0版本,国内很多公司还一直使用u-boot-1.1.4u-boot-1.1.6。其实,我们也没必要追风跟上最新版本,程序跑稳定才是最重要的。当然,有兴趣研究研究也不错,毕竟最新版本增加很多实用的功能。在移植之前,我们简单介绍u-boot这些版本架构的变化。从u-boot-1.3.0u-boot-1.3.2基本上架构是一样的,而从u-boot-1.3.3u-boot-1.3.4,架构相对u-boot-1.3.2变化比较大。从u-boot-2008.10开始,nand flash驱动变化非常大,u-boot-2009.03增加强大的lzma压缩解压功能,fs支持yaffs2u-boot-2009.06  nand flash变化更大。到u-boot-2009.11.1增加DM6467 DM365的支持。
    关于u-boot-1.3.4的移植,本人的博客也介绍在三星s3c2440上移植过,我们在这里主要针对davinci 平台。由于UBOOT功能很多,要全部把移植的东西立刻写出来,对本人还是有难度,所以中间会先发布有关montavista linux-2.6.18的移植,如何把DSP程序先跑起来,等等。由于本人的主要工作是开发产品,卖卖DM6446核心板、DM6437核心板,及相关开发板,智能视频监控IVR,推推DSP方案,所以博客更新速度比较慢,其实写博客的目的,有很大的部分就是想和全国各地朋友交流技术。同时这里要感谢51CTO的小松管理员,把本人的开发攻略改为推荐博文。回到移植正题,我们一步一步把UBOOT跑起来,把内核也跑起来。鉴于学习的目的,本人这里不提供patch
    < XMLNAMESPACE PREFIX ="O" /> 
    第一步:解压和简化UBOOT
     
    ftp.denx.de下载u-boot-1.3.4.tar.bz2u-boot-1.3.4-rc2.tar.bz2,然后解压到你的工作目录,很多人解压完后,就马上进入正题,修改makefile什么的,本人觉得不用那么急。首先删除和平台不相关的文件和文件夹,目的让UBOOT更简化,好理解,减少虚拟机的存储空间,便于备份(每次有进展的修改后,备份和修改记录很重要,这是良好习惯):
    在顶层目录:把文件avr32_config.mkblackfin_config.mki386_config.mkm68k_config.mkmicroblaze_config.mkmips_config.mknios2_config.mknios_config.mkppc_config.mksh_config.mksparc_config.mk删除;文件夹lib_avr32lib_blackfinlib_i386lib_m68klib_microblazelib_mipslib_nioslib_nios2lib_ppclib_shlib_sparcnand_splonenand_ipl,其他就不要删了。
    board目录下:只保留davinci文件夹,其他平台板子全部干掉!男人就要狠一点。而davinci也只保留TI 自己的dv-evm文件夹,这也是我们要修改的平台,schmoogiesffsdrsonata是其他公司基于davinci上的板子,你可以删掉,也可以参考。当然,还是在boarddavinci目录下,你可以COPY dv-evm并改成你公司的板子的名字,然后在顶层修改makefile支持你公司的板子,下一步再说。
    cpu的目录:只保留arm926ejs,其他CPU全部干掉。进入arm926ejs目录,同时把at91sam9omapversatile文件夹删除,保留davinci和其他文件。
    include目录:把文件夹asm-avr32asm-blackfinasm-i386asm-m68kasm-microblazeasm-mipsasm-niosasm-nios2asm-ppcasm-shasm-sparc删除掉。进入configs目录,只保留davinci_dvevm.h,其他*.h文件全部删除调!
    做完以上的工作后,UBOOT相当简洁,其实还有一些文件和文件可以再删,不过已经没必要,我们删除的对象是其他不相关的平台。备份一下这个源版本,便于日后自己修改的UBOOT和这个源版本比较。
     
    第二步:链接交叉编译环境
     
    如果你已经看过本人有关《DAVINCI DM6446开发攻略——环境搭建篇》,按里边描述的方法,对交叉编译环境进行搭建,那么下面编译工作就好进行了。
    修改顶层makefile
    144行:把CROSS_COMPILE = arm-linux-改为CROSS_COMPILE = arm_v5t_le-
     
    282行:把ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND),改为ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND) u-boot.img,就是后面添加u-boot.img
     
    308行:./tools/mkimage -A $(ARCH) -T firmware -C none 后面,添加和注销以下代码:
        -a 0x$(shell grep "T _start" $(TOPDIR)/System.map | awk '{ printf "%s", $$1 }')
        -e 0x$(shell grep "T _start" $(TOPDIR)/System.map | awk '{ printf "%s", $$1 }')
        -n 'u-boot image' -d $< $@
    #       -a $(TEXT_BASE) -e 0
    #       -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) |
    #          sed -e 's/"[  ]*$$/ for $(BOARD) board"/')
    #       -d $< $@
    (注意要加tab键)
    这里这样做的目的,生成的u-boot.img可以被上篇介绍的UBLBOOT起来,而u-boot.bin可以被TI提供的uart_load.exe uartapp.bin 软件方式(soft boot)启动起来,便于生产和测试。
     
    在源makefile文件2416行:就是davinci_dvevm_config :    unconfig
        @$(MKCONFIG) $(@:_config=) arm arm926ejs dv-evm davinci davinci
    根据这一行,你可以参考TI 这个做法定义自己的板子,添加自己板子的config,比如加入:
    davinci_dm6446_config : unconfig
        @$(MKCONFIG) $(@:_config=) arm arm926ejs dm6446 davinci davinci
    然后在boarddavinci目录下,使用
    mkdir dm6446
    cp –f dv-evm/* dm6446/
    同时进入include/configs/目录,使用cp –f davinci_dvevm.h davinci_dm6446.h
    注:其实直接在TI  dv-evm上移植也可以,没必要定义自己的板子和配置。这里只不过给大家举个例子。
    编译工作:
    $make distclean
    $make davinci_dm6446_config
    $make
    看是否编译全部通过,是否生成u-boot.binu-boot.img等文件,同时检查你的交叉编译环境是否建立好,没问题继续往下进行。
     
    第三步:移植板子驱动和配置
    1、  修改davinci_dm6446.h
    首先说说本人板子的信息:DDR2——256M-ByteNAND——128M-Byte——2K Page 通用网口PHY芯片,没有NOR FLASHATA
    /*=======*/
    /* Board */
    /*=======*/
    #define DV_EVM
    #define CFG_USE_NAND(支持NAND
    #define CFG_NAND_LARGEPAGE (支持2K PageNAND
    //#define CFG_NAND_SMALLPAGE(表示支持512 字节 Page
    //#define CFG_USE_NOR(表示支持NOR FLASH
     
    。。。。。。。
    /*===================*/
    /* SoC Configuration */
    /*===================*/
    #define CONFIG_ARM926EJS                   /* arm926ejs CPU core */
    #define CONFIG_SYS_CLK_FREQ     297000000     /* Arm Clock frequency */
    #define CFG_TIMERBASE          0x01c21400    /* use timer 0 */
    #define CFG_HZ_CLOCK            27000000       /* Timer Input clock freq */
    #define CFG_HZ                   1000
    #define CONFIG_SOC_DM644X   SOCDM644X
     
    /*====================================================*/
    /* EEPROM definitions for Atmel 24C256BN SEEPROM chip */
    /* on Sonata/DV_EVM board. No EEPROM on schmoogie.    */
    /*====================================================*/
    //#define CFG_I2C_EEPROM_ADDR_LEN            2
    //#define CFG_I2C_EEPROM_ADDR              0x50
    //#define CFG_EEPROM_PAGE_WRITE_BITS      6
    //#define CFG_EEPROM_PAGE_WRITE_DELAY_MS  20
    (如果你的板子没有I2C接口的EEPROM,把上面的代码注释掉)
     
    /*=============*/
    /* Memory Info */
    /*=============*/
    #define CFG_MALLOC_LEN              (0x10000 + 128*1024)  /* malloc() len */
    #define CFG_GBL_DATA_SIZE    128         /* reserved for initial data */
    #define CFG_MEMTEST_START  0x80000000    /* memtest start address */
    #define CFG_MEMTEST_END            0x81000000    /* 16MB RAM test */
    #define CONFIG_NR_DRAM_BANKS 1            /* we have 1 bank of DRAM */
    #define CONFIG_STACKSIZE     (256*1024)     /* regular stack */
    #define PHYS_SDRAM_1           0x80000000    /* DDR Start */
    #define PHYS_SDRAM_1_SIZE 0x10000000    /* DDR size 256MB */
    #define DDR_8BANKS                      /* 8-bank DDR2 (256MB) */
    有关DDR Memory这里不需要修改,因为本人的板子是256M的。除非你的板子是128M才改为:SIZE     0x08000000 DDR_4BANKS
     
    /*====================*/
    /* Serial Driver info */
    /*====================*/
    串口驱动不用改。
     
    /*===================*/
    /* I2C Configuration */
    /*===================*/
    I2C 驱动可以不用改。也可以注释掉,如果你不想在UBOOT操作任何I2C的动作。
     
    /*==================================*/
    /* Network & Ethernet Configuration */
    /*==================================*/
    网络配置也不需要修改
     
    /*=====================*/
    /* Flash & Environment */
    /*=====================*/
    由于最开始我们已经定义好CFG_USE_NANDCFG_NAND_LARGEPAGE的信息,所以这里也不需要修改;
     
    /*==============================*/
    /* U-Boot general configuration */
    /*==============================*/
    这里主要定义UBOOT的一些操作,比如命令行显示字符串,delay等待时间的长短,这些根据个人要求修改,不改也可以。
     
    /*===================*/
    /* Linux Information */
    /*===================*/
    UBOOT要把一些参数信息传给内核linux使用,linux内核运行的时候需要这些配置信息,内核能够识别这些字符串信息。先把以下两个定义注释掉,
    //#define CONFIG_BOOTARGS           xxxxxxxxxxxxxx
    //#define CONFIG_BOOTCOMMAND     xxxxxxxxxxxxxxx
    如果你要从NAND FLASH启动:
    #define CONFIG_BOOTARGS “mem=120M console=ttyS0,115200n8 noinitrd ip=off root=/dev/mtdblock3”mtdblock3 表示文件系统放在LINUX内核分区)
    #define CONFIG_BOOTCOMMAND   " nboot 0x80008000 0x700000"(把linux 内核从FLASH BOOT起来,下面会介绍UBOOT的命令)
    如果你还在调试阶段,建议你使用NFS文件系统:
    #define CONFIG_BOOTARGS “mem=120M console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=192.168.1.251:/home/<useraccount>/nfs/tirootfs,nolock”
    #define CONFIG_BOOTCOMMAND   " nboot 0x80008000 0x700000"
     
    本人的redhat linux的主机地址是:192.168.1.251,即SERVER IP=192.168.1.251
    板子的IP是:192.168.1.188
    如果你没有路由器给你分配IP地址,参数行里使用:ip=off
    mem=120M:本人定义前128M linux系统, 128M DSP和图像缓冲区等;
    nboot 0x80008000 0x700000:讲明本人把内核放在nand 地址为0x700000,通过nand boot的命令把内核从nand 0x700000地址导入DDR 0x80008000地址
     
    /*=================*/
    /* U-Boot commands */
    /*=================*/
    这里有很多功能的定义,包括#include <config_cmd_default.h>里边定义的,不需要的功能可以使用#undef ,从而减小UBOOT 生成BIN文件的尺寸。比如
    #undef CONFIG_CMD_DHCP
    #undef CONFIG_CMD_DIAG
    #undef CONFIG_CMD_EEPROM
    #undef CONFIG_CMD_LOADB   /* loadb */
    #undef CONFIG_CMD_LOADS    /* loads */
     
    2、  修改board/davinci/dv-evm/dv_board.c里的有关自己板子的配置
    int board_init(void)函数里,因为本人的板子使用/EM_CS2作为NAND FLASH的片选信号,故在PINMUX0寄存器里,有关AEAW必须关掉。
    /* Enable EMAC and AEMIF pins */
    //REG(PINMUX0) = 0x80000c1f;
    REG(PINMUX0) = 0x80000000;只使用EMAC
    否则UBOOT 启动不起来。
     
    int misc_init_r (void)函数里,因为本人没有使用I2C EEPROM存储MAC 地址,所以要注释掉
    #if 0
    /* Set Ethernet MAC address from EEPROM */
    if (i2c_read(CFG_I2C_EEPROM_ADDR, 0x7f00, CFG_I2C_EEPROM_ADDR_LEN, buf, 6)) {
         printf(" EEPROM @ 0x%02x read FAILED!!! ", CFG_I2C_EEPROM_ADDR);
    }
    else
        {
         tmp[0] = 0xff;
         for (i = 0; i < 6; i++)
             tmp[0] &= buf[i];
     
         if ((tmp[0] != 0xff) && (getenv("ethaddr") == NULL)) {
             sprintf((char *)&tmp[0], "%02x:%02x:%02x:%02x:%02x:%02x",
                 buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
             setenv("ethaddr", (char *)&tmp[0]);
         }
    }
    #endif
    一般MAC地址保存到NAND,降低成本。
    ………
    #if 0
    i2c_read (0x39, 0x00, 1, (u_int8_t *)&i, 1);
    setenv ("videostd", ((i  & 0x80) ? "pal" : "ntsc"));
    #endif
    如果你的板子没有TI 的视频采集芯片TVP5146之类的,上面的功能最好去掉。
     
    3、  网口驱动移植:Cpu/arm926ejs/davinci/ ether.c
    因为DM6446芯片上集成EMACMDIO,所以直接使用PHY芯片就可以了,驱动就使用UBOOT-1.3.4 TI 默认的驱动,而不是TI EVM使用的PHY_LXT972。直接使用GENERIC PHY,有个地方需要修改,否则网口工作不起来,本人也是从一个网友那里查到类似的信息,在static int dm644x_eth_phy_detect(void)函数里,改成:
    #if 0
    for (i = 0; i < 32; i++) {
            if (phy_act_state & (1 << i)) {
                   if (phy_act_state & ~(1 << i))
                          return(0);              /* More than one PHY */
                   else {
                          active_phy_addr = i;
                          return(1);
                   }
            }
    }
     
    return(0);       /* Just to make GCC happy */
    #else
    active_phy_addr = 1;
    return(1);
    #endif
    由于本人的开发板使用GPIOPHY芯片进行复位,所以在static int dm644x_eth_hw_init(void)函数里,加入GPIO复位的支持,同时文件头部加入#include <asm/arch/hardware.h>
    可以说, UBOOT移植到这里,基本上可以跑起网络了,TFTP应该没问题了,但是有关如何烧写UBL,烧写UBOOTLINUX 内核等文件,以后再慢慢聊吧,一步一步来,《UBOOT移植(2)》以后会推出来,下一篇直接到MonaVista linux-2.6.18的移植(1),先让系统通过网络和串口跑起来,由简单到复杂。
    继续make一下,生成u-boot.binu-boot.imgCOPY u-boot.binWINDOWS底下,使用uart_load.exe和配套uart.bin文件,就可以把u-boot.bin给跑起来。如果有linux 内核编译出来并使用UBOOT tool目录下的mkimage工具生成 uImage,在UBOOT命令行下:
    U-Boot > tftp 80008000 uImage
    #######################################
    U-Boot > bootm 80008000
    ## Booting kernel from Legacy Image at 80008000 ...
       Image Name:   linux-2.6.18
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    1509948 Bytes =  1.4 MB
       Load Address: 80008000
       Entry Point:  80008040
       Verifying Checksum ... OK
       XIP Kernel Image ... OK
    OK
     
    Starting kernel ...
     
    Uncompressing Linux...................................................................................................... done, booting the kernel.
    Linux version 2.6.18_pro500-davinci_evm-arm_v5t_le (root@xxxxx.com) (gcc version 4.2.0 (MontaVista 4.2.0-16.0.32.0801914 2008-08-30)) #1 PREEMPT Sun Mar 7 01:07:16 CST 2010
    CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
    Machine: DaVinci EVM
    ……………………………………………………………
    当出现上面的信息后,说明以上u-boot-1.3.4的移植是成功的。有兴趣的朋友可以参考以上做法移植u-boot-2009.11-rc2,也可以跑起来,只不过CROSS_COMPILE ?= arm-linux-不是放在顶层makefile了,而是放在lib_arm/config.mk里,改成CROSS_COMPILE = arm_v5t_le-就可以编译了。 
     

     

    补充有关DM6446 BOOT的一点知识:如果板子没有任何程序,RBL会通过串口0发送BOOTME命令上来,运行uart_load.exe,会接到RBL的命令,然后握手通信,下载uart.bin到板子上,并运行起来,uart.bin程序就是小小的BOOT,通过串口0PC通信,下载u-boot.bin,并把u-boot.bin给运行起来。所以UBOOT移植到上面的步骤,可以进入linux 内核移植的工作了。

    本文出自 “集成系统-踏上文明的征程” 博客,请务必保留此出处http://zjbintsystem.blog.51cto.com/964211/282387

    分享至
    更多 0
    一键收藏,随时查看,分享好友!
    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄

    文章评论

     <<   1   2   >>   页数 ( 1/2 )  
    [1楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  lyblyxj 回复
    2010-03-11 15:59:39
    不错!学习了
    呵呵 很有难度的东西啊

    [2楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  邹盼盼 回复
    2010-03-11 23:25:22
    几个月前自己也装过一个“有奔头”玩了一下,感觉还可以。

    [3楼]楼主    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  zjb_integrated 回复
    2010-03-12 09:19:20
    UBOOT在开源嵌入产品设计中,地位越来越重要,功能越来越丰富。

    [4楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  282409975 回复
    2010-04-12 11:00:06
    你好,我也是做dm6446,我们公司买的板子是ti原厂的,就是那个dvevm,我现在想移植下u-boot-1.3.4,就把根目录下的那个makefile的CROSS_COMPILE=arm_v5t_le-,然后就直接make distclean;make davinci_dvevm_config;make
    这样也生成了u-boot.bin以后,用DVFlasher下载到板子上了,发现uboot启动不了,打印信息如下:
    TI UBL Version: 1.12, Flash type: NAND
    Booting PSP Boot Loader
    PSPBootMode = NAND
    Starting NAND Copy...
    Initializing NAND flash...
    Valid MagicNum found.
    NAND Boot success.
      DONE
    然后就停止了,请问下为什么???谢谢了,我的QQ是451686458,谢谢了

    [5楼]楼主    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  zjb_integrated 回复
    2010-04-13 18:23:07
    这个原因有很多,你要跟踪是否运行到board.c里的start_armboot()函数,等等。你可以参考人家给你的UBOOT是如何编译出u-boot.bin还是其他加有头信息的二进制文件

    [6楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  [匿名]晓风 回复
    2010-05-12 12:15:12
    你好,我的dvflasher不能运行。

    [7楼]楼主    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  zjb_integrated 回复
    2010-05-12 15:29:20
    抱歉,没用过dvflasher,我们肯定不用这个dvflasher。

    [8楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  hejing_032 回复
    2010-09-16 09:51:08
    下载uboot之前有个flashwrite到什么地方能够下载源码?这个文件时通用的还是根据硬件决定

    [9楼]楼主    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  zjb_integrated 回复
    2010-09-16 10:56:13
    这个估计是TI的DSP out文件,我们不关心这个。

    [10楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  wuyunzdh 回复
    2011-01-03 18:27:12
    你好,我的的uboot用老的环境是可以编译通过的并可以正常使用,最近从新装了一个编译环境,也是编译过去的,但是,下载到NORflash中美任何反应,但是可以用软件可以启动启动起来!!!
    请问这是什么原因引起来的!!

    [11楼]楼主    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  zjb_integrated 回复
    2011-01-04 16:54:43
    我们没有测试过NOR FLASH的应用。你的新编译环境.bashrc文件是否设置:
    PATH="/opt/mv_pro_5.0.0/montavista/pro/devkit/arm/v5t_le/bin:
    /opt/mv_pro_5.0.0/montavista/pro/bin:
    /opt/mv_pro_5.0.0/montavista/common/bin:$PATH"
    的路径

    [12楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  wuyunzdh 回复
    2011-01-06 11:18:09
    谢谢你的回复,
    路径肯定个配置了,在.bash_profile不然应该也编译不过去呀,是不是?
    这是我新环境的:
    cat /root/.bash_profile
    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
        . ~/.bashrc
    fi

    # User specific environment and startup programs

    PATH=$PATH:$HOME/bin
    PATH=/opt/montavista/pro/devkit/arm/v5t_le/bin:/opt/montavista/pro/bin:/opt/montavista/common/bin:/opt/3.4.1/bin:/opt/arm-920t-3.4.4/bin:$PATH

    export PATH
    unset USERNAME

    下面是我老环境的:
    [root@myhost ~]# cat /root/.bash_profile
    alias rm='rm -i'
    alias ll='ls -l --color'
    alias cp='cp -i'
    alias mv='mv -i'

    PATH="${PATH}":/usr/local/arm/3.4.1/bin:/usr/local/920t_le/bin:/usr/local/bin:/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin:/opt/mv_pro_4.0/montavista/common/bin:/opt/mv_pro_4.0/montavista/pro/bin:/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin:/opt/uClinux/bfin-uclinux/bin://opt/uClinux/bfin-linux-uclibc/bin

    export PATH

    . $HOME/.bashrc

    [13楼]    Davinci DM6446开发攻略——u-boot-1.3.4移植(1) - 毛毛虫 - 毛毛雨的刻薄  wuyunzdh 回复
    2011-01-06 16:06:43
    谢谢你的回复,肯定设置了,不然也编译不过去,我的是放在.bash_profile中的。
    新的编译环境见下:
    [root@localhost bin]# cat /root/.bash_profile
    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
        . ~/.bashrc
    fi

    # User specific environment and startup programs

    PATH=$PATH:$HOME/bin
    PATH=/opt/montavista/pro/devkit/arm/v5t_le/bin:/opt/montavista/pro/bin:/opt/montavista/common/bin:/opt/3.4.1/bin:/opt/arm-920t-3.4.4/bin:$PATH

    export PATH
    unset USERNAME

    老的编译环境是:
    [root@myhost ~]# cat /root/.bash_profile
    alias rm='rm -i'
    alias ll='ls -l --color'
    alias cp='cp -i'
    alias mv='mv -i'

    PATH="${PATH}":/usr/local/arm/3.4.1/bin:/usr/local/920t_le/bin:/usr/local/bin:/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin:/opt/mv_pro_4.0/montavista/common/bin:/opt/mv_pro_4.0/montavista/pro/bin:/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin:/opt/uClinux/bfin-uclinux/bin://opt/uClinux/bfin-linux-uclibc/bin

    export PATH

    . $HOME/.bashrc

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    优先队列
    Problem W UVA 662 二十三 Fast Food
    UVA 607 二十二 Scheduling Lectures
    UVA 590 二十一 Always on the run
    UVA 442 二十 Matrix Chain Multiplication
    UVA 437 十九 The Tower of Babylon
    UVA 10254 十八 The Priest Mathematician
    UVA 10453 十七 Make Palindrome
    UVA 10163 十六 Storage Keepers
    UVA 1252 十五 Twenty Questions
  • 原文地址:https://www.cnblogs.com/mao0504/p/4706921.html
Copyright © 2011-2022 走看看