免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1790 | 回复: 0
打印 上一主题 下一主题

开发过程中遇到的问题和解决办法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-16 10:19 |只看该作者 |倒序浏览
Set environment variable
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
当前用户:
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.[color="#0000ff"] 通常在这里增加.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
Execute Command After System Initialize
在/etc/rc.local中增加要执行的脚本
Download Linux Kernel to Target Board
海斯开发板的流程是这样的:
  • 使用MultiICE或其他工具,烧写Hiboot(在Uboot基础上修改的boot),目标地址为0x3400 0000.这个地址是该开发板上!NAND flash的起始地址
  • 配置和编译目标板的内核,生成zImage文件
  • 使用Uboot提供的mkimage工具对zImage文件进行处理,增加入口信息,生成hikernel文件
  • 通过boot提供的tftp,下载hikernel文件到0x3410 0000地址;或是通过boot提供的串口下载命令,下载到内存中,然后cp到0x3410 0000地址
  • 在boot中设置参数,通过>bootm 0x3410 0000启动内核;也可以设置为自动启动
  • 使用busybox,生成根文件系统的内容;然后使用专门的工具,生成img文件
  • 使用内核一样的方式,网络或串口,下载根文件系统到0x3430 0000

    FriendlyARM板的流程如下:
  • 使用sjf2410烧写boot(vivi修改而来)到Nand flash(不知道为什么没设置Nandflash的地址,如何找到地址的?)
  • 用boot给Nandflash分区
  • 用boot重新下载boot
  • 用boot下载内核映像
  • 用boot下载根文件系统映像

    Ambarella开发板的流程之网络升级如下:
  • boot的升级方法没介绍,所以不用也没必要升级boot
  • 编译内核和根文件系统,分别生成Image和ramdisk.gz
  • 使用脚本,处理内核和根文件系统
           align.sh public_linux/linux/arch/arm/boot/Image kernel.bin
           align.sh root_fs/ramdisk.gz rootfs.bin
  • 在目标板上用flashcp命令,更新内核和根文件系统([color="#ff0000"] 看样子升级的前提是目标板上已经有了linux才能mount nfs )
           flashcp -v /mnt/ipcam/ambarella/rootfs.bin /dev/mtd4
           flashcp -v /mnt/ipcam/ambarella/kernel.bin /dev/mtd3
  • [color="#ff0000"] 如何通过!DirectUSB升级,没找到说明

    Make Vim Colorful?
    sudo aptitude install vim-full
    增加文件~/.vimrc
    代码:
    set nobackup
    set nocompatible
    syntax on
    filetype plugin on
    "colorscheme murphy
    colorscheme blue
    "colorscheme ron
    let &termencoding=&encoding
    set fileencodings=utf-8,gbk,ucs-bom,cp936
    Ubuntu8.04安装vmtools后使能共享文件夹和鼠标滚轮
    共享文件夹解决方案
    鼠标滚轮解决方案:
    vi /etc/X11/xorg.conf
    Section "InputDevice"
            Identifier      "Configured Mouse"
            Driver          "vmmouse"
            Option          "CorePointer"
            Option          "Device"        "/dev/input/mice"
            Option          "Protocol"      "ImPS/2"      #加入以下3行
            Option          "ZAxisMapping"   "4 5"
            Option          "Emulate3Buttons" "true"
    EndSection
    Install Samba
    http://www.w3china.org/blog/more.asp?name=FoxWolf&id=35052
    Use NFS as root file system
    编辑文件/etc/exports,在该文件里添加如下内容:  /home/work 192.168.0.*(rw,sync,no_root_squash);
    其中的路径表示要共享的目录,ip表示允许访问的ip范围,括号里面的表示权限;
    执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:   # /etc/rc.d/init.d/nfs start
    在Linux 服务器上进行NFS 服务器的回环测试,验证共享目录是否能够被访问。在Linux 服务器上运行如下命令:# mount –t nfs 192.168.0.20:/home/work /mnt
    Use Putty on Windows to Login Ubuntu8.04 with OpenSSH
    ?
      
    http://idcnews.net/html/edu/network/20070101/285458.html
    http://linux-sxs.org/networking/openssh.putty.html
    按照以上方式,设置成功,我没有加密码.之后出现了中文乱码,修改putty的设置,在window>translation里面,将字符集改为UTF-8
    Compile Kernel Modules by Cross Compile Tools or Local Compile Tools
    如果要交叉编译,首先写一个Makefile,比如:
    ifneq ($(KERNELRELEASE),)
       obj-m := mt9p001_ryan.o   
    else
       PWD := $(shell pwd)
       KDIR := ~/work/AMB/ambarella/public_linux/linux
    all:
       $(MAKE) -C $(KDIR) M=$(PWD) modules
    clean:
       rm -rf .*.cmd *.o *.mod.c .tmp_versions
    endif
    KDIR必须是目标机的内核的,不能是pc机的.
    然后执行
    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
    结果如下:
    ryan@ryan-pc:~/work/AMB/mycode/modules$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
    make -C ~/work/AMB/ambarella/public_linux/linux M=/home/ryan/work/AMB/mycode/modules modules
    make[1]: Entering directory `/home/ryan/work/AMB/ambarella/public_linux/linux'
      CC [M]  /home/ryan/work/AMB/mycode/modules/mt9p001_ryan.o
    /home/ryan/work/AMB/mycode/modules/mt9p001_ryan.c: In function 'mt9p001_detect':
    /home/ryan/work/AMB/mycode/modules/mt9p001_ryan.c:40: warning: ISO C90 forbids mixed declarations and code
      Building modules, stage 2.
      MODPOST 1 modules
      LD [M]  /home/ryan/work/AMB/mycode/modules/mt9p001_ryan.ko
    make[1]: Leaving directory `/home/ryan/work/AMB/ambarella/public_linux/linux'
    如果不进行交叉编译,那么需要修改下之前的Makefile,将KDIR改为本机的内核头文件目录,比如/lib/modules/2.6.24-19-generic/build/.
    然后执行>make,不加参数.如果之前设置了CROSS_COMPILE等环境变量,可能有问题,最好重启shell.
    Compile Apps by Cross Compile Tools or Local Compile Tools
    如果只有一个.c文件,那么执行如下代码即可,其中的gcc替换为对应平台的gcc
    gcc -o result filename.c
    如果要加一些编译选项(比如链接库的路径),直接在命令里面加.
    Debug Apps on PC or Target Board
    在PC机上调试app,主要有两种方式:
  • 直接用gdb命令行方式调试: 功能强大,速度快;但不易操作
  • 用ddd等图形化前端调用gdb进行调试: 界面直观;但速度慢

    调试pc的应用,需要用本机的gcc编译,增加-g选项,以加入调试信息
    $gcc -g -o i2c_ambarella_test_pc i2c_ambarella_test.c
    如果是命令行方式,就可以运行gdb直接进行调试:
    $gdb i2c_ambarella_test_pc
    接下来,就可以用list,next/step,print,run,break等命令了.详见>
    ddd方式没有使用过,前期最好还是使用命令行方式.
    目标机上的app调试,目前的方式如下:
    • 目标机上运行: $gdbserver 10.0.0.2:1000 test
    • PC机上使用insight,选择tcp方式,指定目标机的ip 10.0.0.2,端口1000就可以了

    如何去掉文件里面的^M
    windows里面编辑的文件在linux里面可能会看到很多^M,有的不会被直接看到,需要先用gedit编辑下才能看到.
    在vim里面使用 %s/[Ctrl_v][ENTER]//g可以去掉他们,不知道为什么直接在虚拟机上用这个不行(可能是虚拟机的键盘不一样).在ssh里面才可以用.
    或者用ultraedit,上面有个dos2unix的图标.
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/82219/showart_1308564.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP