{$cluname}

科伟奇论坛 » Powerpc技术论坛 » 华恒PowerPC系列嵌入式Linux开发板常见问题解答


‹‹上一主题 | 下一主题›› 查看 9072
发表一个新帖子 发表回复

标题 华恒PowerPC系列嵌入式Linux开发板常见问题解答 在百度搜索本主题 [ 搜 ] [ 打印 ] [ 推荐 ] [收藏帖子] [ 收藏到新浪VIVI] [ 订阅 ]

frodo (附小一年级)
楼主   [点击复制本网址] [ 字体: ] [ 编辑 ] [ 报告 ] [评分]
Rank:1
Rank:1
UID 21
帖子 7
精华 1 
积分 26 点
金币 43 枚
魅力 18 度
注册 2009年11月26日
华恒PowerPC系列嵌入式Linux开发板常见问题解答
1、华恒向ppc移植的不是uClinux吗?
  当然不是,实际上ppc用的linux和pc机用的linux是一致的,只是cpu不同而已。powerpc处理器是有mmu的处理器,用到是linux,而coldfire和龙珠是没有mmu的,用的是uClinux。这样向powerpc上的Linux移植比向uClinux移植更为容易,用户只要修改相应的编译器就可以了。如果是编译环境的配置,建议查看coldfire和龙珠常见问题解答。

2、如何做ramdisk?
创建一个简单的基于 Ext2fs 的 Ramdisk
mke2fs -vm0 /dev/ram 4096
mount -t ext2 /dev/ram /mnt
cd /mnt
cp /bin, /sbin, /etc, /dev ... files in mnt
cd ../
umount /mnt
dd if=/dev/ram bs=1k count=4096 of=ext2ramdisk
mke2fs 是用于在任何设备上创建 ext2 文件系统的实用程序 — 它创建超级块、索引节点以及索引节点表等等。
在上面的用法中,/dev/ram 是上面构建有 4096 个块的 ext2 文件系统的设备。然后,将这个设备(/dev/ram)挂装在名为 /mnt 的临时目录上并且复制所有必需的文件。一旦复制完这些文件,就卸装这个文件系统并且设备(/dev/ram)的内容被转储到一个文件(ext2ramdisk)中,它就是所需的 Ramdisk(Ext2 文件系统)。
上面的顺序创建了一个 4 MB 的 Ramdisk,并用必需的文件实用程序来填充它。 一些要包含在 Ramdisk 中的重要目录是:
* /bin — 保存大多数象 init、busybox、shell、文件管理实用程序等二进制文件。
* /dev — 包含用在设备中的所有设备节点
* /etc — 包含系统的所有配置文件
* /lib — 包含所有必需的库,如 libc、libdl 等

如果此方法行不通,请试用下面的方法:
制作ramdisk的方法
(1)建立loop设备的临时挂接点和一个大小为6兆(大小可以调节)的临时文件,并将其清零:
   #mkdir /mnt/loop 2>/dev/null。
   #dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=6144 >/dev/null。
(2)将loop设备与临时文件联系起来
   #losetup /dev/loop0 /tmp/loop_tmp
(3)Linux內核识别两种可以直接拷贝到RAMDISK的文件系统,它们是minix 和ext2,ext2性能更好:
   #mke2fs -m 0 /dev/loop0 2>/dev/null
   #mke2fs将会自动判断设备容量的大小并相应地配置自身, -m 0参数防止它给root保留空,
   这样会腾出更多地有用空间。
(4)接着把虚拟盘挂在节点/mnt上:
   #mount /dev/loop0 /mnt/loop -t ext2
(5)将制作好的root文件系统拷贝到所挂的节点上,卸下挂接点,刪除建立的挂接点。
   #cp -a /ramdisk/* /mnt/loop
   #umount /mnt/loop
现在制作的/tmp/loop_tmp就是一个6M的ramdisk文件

3、8421的扩展口用的是pc104plus形式吗?那是不是5个总线仲裁信号都在上面?
  支持的是pc104plus接口信号,使用3.3v电源。PCI MASTER方式,最大支持4个插槽扩展

4、.mpc8245嵌入式平台来取代pc104的piii板做防火墙的一些讨论
  pc104太贵了,用pii/piii的pc104简直天价。用486的pc104当防火墙太慢了一点。如果你要嵌入式,干脆用mpc8245带三个或者四个百兆以太网口,350兆的主频,每秒处理6.65亿条指令的powerpc芯片。600多块钱的处理器加上几个以太网芯片,四十元一个口,加上128兆内存,8兆flash用来存程序,还有一些电源器件什么的,不用pc电源的!整机成本不到一千块,而你用pc104 piii要七千块,加上机箱电源什么的,体积很大,功耗很大。而用mpc8245作出来的仅仅巴掌那么大!建议你看看华恒有一款针对防火墙的mpc8245嵌入式linux开发板。

5、MPC860支持USB吗?
MPC860不支持USB,建议使用MPC850,823支持USB

6、HHPPC860-3COM-2ETH-R1用的FLASH(AM29LV160DB)上有一个RESET引脚和一个BYTE引脚,分别是和MPC860的什么引脚相连?
  接PORESET,16bit方式BYTE接电源

7、MPC860与LXT972的组合构成100M以太网口,用MPC860与LXT905的组合构成10M以太网口。如果想要一个10M/100M自适应网口的话,可不可以使用MPC860与LXT972构成的100M以太网口?
  LXT972可以10/100M自适应

8、有意使用MPC8245平台开发产品。想在HHPPC8245-4ETH-R1底板基础上加上我们自己的一个模块,该模块占用较大存储区,且对速度要求较高,请问怎么办?

  256兆flash空间可映射来用,不够吗?333M的处理器主频,是否够?

9、华恒的8241,8245核心板的flash可以扩成16M吗?可以加在底板上吗?
  不可以把核心板的flash可以扩成16M,地址线不够,你可以重做板,而且还要修改ppcboot设置,可以在底板上扩展,PPCBOOT修改的地方很少。

10、可不可以描述一下ram版烧写和rom版烧写的区别?
  本身没有说明区别,只是运行的地方不同而已

11、下载了一些资料,其中有一些资料是关于hhppc8245-4eth-r1开发套件。仔细看了那个pdf文件,发现第一块flash的地址空间是:oxff800000-oxff9fffff(第39页中间),随后在第40页的注意项中又说启动Flash代码的地址为0xfff00000?
  第二块Flash地址范围是ff000000-ff1fffff(2M),第一块Flash地址范围是ff800000-ff9fffff(2M),启动ppcboot的时候是在第二块flash的0xff900000(和0xfff00000重叠)上。这样你可以有足够的地址进行扩展。

12、860板子的启动方式
  一般都是从flash解压到ram运行的

13、860的bdm口支持硬件检测嘛?
  华恒的BDM驱动中有一个READE文件描述如何使用BDM检测硬件

14、PPCboot都有什么作用,是不是在Linux系统没有烧录时用于烧录操作系统。当操作系统烧录完就没有什么用了?如果系统硬件有变化,比如外面插了一块卡,是否需要修改PPCboot,增加对卡的支持?
  ppcboot就是一个bootloader,启动Linux后它就没有用了,例如以太网IP地址,在ppcboot下有一个,进入Linux后就重新设置了。ppcboot对cpu进行初始化,设置cpu内部寄存器,如何启动系统以及烧写系统等很多系统。新加的pci外设可以在操作系统中加驱动,不过如果像网卡驱动这种在ppcboot下的tftp命令中要用到的话就要在ppcboot中加驱动。

15、当Linux正常启动起来后,访问以太网络时,是否还需要调用PPCBoot中关于以太网络的驱动?
  所有的外设在启动后重新加驱动,而且ppcboot的驱动和linux下的驱动并不是一样。

16、开发8245用哪家的bdm比较好?
  8245没有BDM,只能用JTAG

17、860板的两个网口哪个是 100M?
  离串口最近的那个是10兆网口,另一个是100兆口

18、tftp服务器地址到底是多少? 我用的是 192.168.2.199
  下载的服务器IP地址通常是192.168.2.199,但也可更改,在LinuxPPC/CDK/bdmtools/MPCBDM/mpc.init 文件中set {int}0x170000=0xc0a802c7这一行代码就是设置server ip的,0xc0a802c7就是192.168.2.199。

19、在烧写时老是报错, 与不插bdm板类似的错误
  此种现象可能是BDM的问题(可能是BDM接口卡坏了)

20、在X86上,访问内存与访问IO的指令是不一样的,访问主存可以用指针,访问I/O可以用in* out*指令。请问在PPC中下的linux,我要读写一个绝对地址,用什么指令?
  你如果是在ppc上,因为有mmu,所以如果在linux下,必须先把你绝对地址进行映射ioremap,然后再读写。至于访问I/O是否用in* out*指令那就看你用什么设备了。不过你可以在ppcboot下直接读写绝对地址。

21、重新烧写pImage后重新启动系统后无法ping通
  你如果在ppcboot下使用过tftp的话,建议你reset后再bootm 800000 ff000000,因为ppcboot好像改动了网卡的寄存器

22、华恒科技HHPPC8245-4FEC-R1技术手册
在第11页,说的是
tftp 80000000 pImage
fp
tftp a0000000 ramdisk
fr
命令烧写,启动linux用
bootm ff800000 ff000000
...
bootm 800000 a00000
bootm 800000 ff000000
(pImage 在ram中)
bootm ff800000 a00000
(ramdisk在ram中)

在第29页,说的是
tftp 800000 pImage
fp
tftp a00000 ramdisk
fr
命令烧写,启动linux用
bootm ff800000 ff000000
...
bootm 800000 a00000
bootm 800000 ff000000
(ramdisk 在ram中)
bootm ff800000 a00000
(pImage在ram中)
笔误,应该为以下值

在第11页,说的是
tftp 800000 pImage
fp
tftp a00000 ramdisk
fr
命令烧写,启动linux用
bootm ff800000 ff000000
...
bootm 800000 a00000
bootm 800000 ff000000
(pImage 在ram中)
bootm ff800000 a00000
(ramdisk在ram中)

在第29页,说的是
tftp 800000 pImage
fp
tftp a00000 ramdisk
fr
命令烧写,启动linux用
bootm ff800000 ff000000
...
bootm 800000 a00000
bootm 800000 ff000000
(pImage在ram中)
bootm ff800000 a00000
(ramdisk在ram中)

23、860套件提供的Linux是标准Linux,系统比较大,对860运行效率影响大吗?请问该款Linux适合于监控系统开发吗?是否有用于实际监控系统的开发案例?
  860使用的是PPCLinux,很接近PC上的Linux。内核一般只有几百K大小。我们没有实时监控的案例。最典型的案例是道路上的电子眼。

24、如何在开发套件中加对rmmod命令等支持?
  在/LinuxPPC/usr/src/applications/busybox-0.60.2中是busybox的源代码。在Config.h中选上#define BB_RMMOD。然后重新编译内核。然后替换ramdisk中bin文件夹中的busybox命令,然后重新烧写ramdisk。新的系统就支持rmmod命令。添加其他在busybox相应的命令的步骤和添加rmmod命令一样。

25、关于HHPPC8XX的串口2
  在MPC850/823 SUPERIO 底板上要把J2、J3、J4跳到靠串口2的两根针上。
  HHPPC8241的PPCboot存储在 ff900000 ,从ff800000-ff900000为pImage的存储空间。

26、HHPPC8xx注册中断的问题:
  1、问题:request_irq()不能用
  解决方法:改用request_8xxirq();
  2、问题,不能注册irq值大于16的中断
  把/linux-2.4.4/include/asm/irq.h中的第64行:
  #define NR_SIU_INTS 16
  改成:
  #define NR_SIU_INTS 32
  可在arch/ppc/kernel/irq.c文件中的request_irq()函数的最前面加上
  printk("NR_IRQS=%d\n",NR_IRQS);可能的irq中断数。

27、关于HHPPC8XX修改SDRAM大小对ppcboot相关代码的修改:
  1、在PPCBOOT目录下的board/tqm8xx/tqm8xx.c中的initdram函数中所有包含下面语句
  memctl->memc_mamr=0xD0904114改为memctl->memc_mamr=0xD0802114
  return(32*1024*1024)改为return(16*1024*1024)
  2、在PPCBOOT目录下的common/board.c中的以下语句
  *(volatle unsigned long*)bdinfo=0x02000000改为
  *(volatle unsigned long*)bdinfo=0x01000000

28、关于HHPPC824x-PCIIDE硬盘检测的问题
  测试硬盘硬件连接:
  > 在ppcboot里面执行:
  > mw.w 7c00000c 55aa
  > md 7c000000
  > 如果显示已经写进去了,硬件上连接可能就没有问题了
  检测到硬盘的启动信息会造成minicom里面显示乱码,具体的信息可在进入SHELL提示符后键入:
  #dmesg
  就可看到真正的启动打印出来的IDE硬盘信息:
  Uniform Multi-Platform E-IDE driver Revision: 6.31
  ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
  ioremap:c9000000
  ide0: CPCI405 IDE interface
  hda: probing with STATUS(0x50) instead of ALTSTATUS(0x00)
  hda: Maxtor 6Y120L0, ATA DISK drive
  ide0 at 0xc9000000-0xc9000007,0xc9000000 on irq 16
  hda: 240121728 sectors (122942 MB) w/2048KiB Cache, CHS=238216/16/63
  Partition check:
  /dev/ide/host0/bus0/target0/lun0: [PTBL] [14946/255/63] p1 p2 < p5 >
  关于硬盘的使用方法:
  # cd /proc
  # cat partitions
  major minor #blocks name

  3 0 11998-20060864 ide/host0/bus0/target0/lun0/disc
  3 1 60026841 ide/host0/bus0/target0/lun0/part1
  3 2 1 ide/host0/bus0/target0/lun0/part2
  3 5 60026841 ide/host0/bus0/target0/lun0/part5

  # cat devices
  Character devices:
  1 mem
  2 pty/m%d
  3 pty/s%d
  4 tts/%d
  5 cua/%d
  7 vcs
  10 misc
  162 raw
  200 ioport

  Block devices:
  1 ramdisk
  3 ide0
  7 loop
  43 nbd
  #
  # ls /dev/hda* -l
  brw-rw---- 1 root root 3, 0 Sep 12 2002 /dev/hda
  brw-rw---- 1 root root 3, 1 Sep 12 2002 /dev/hda1
  brw-rw---- 1 root root 3, 10 Sep 12 2002 /dev/hda10
  brw-rw---- 1 root root 3, 11 Sep 12 2002 /dev/hda11
  brw-rw---- 1 root root 3, 12 Sep 12 2002 /dev/hda12
  brw-rw---- 1 root root 3, 13 Sep 12 2002 /dev/hda13
  brw-rw---- 1 root root 3, 14 Sep 12 2002 /dev/hda14
  brw-rw---- 1 root root 3, 15 Sep 12 2002 /dev/hda15
  brw-rw---- 1 root root 3, 16 Sep 12 2002 /dev/hda16
  brw-rw---- 1 root root 3, 2 Sep 12 2002 /dev/hda2
  brw-rw---- 1 root root 3, 3 Sep 12 2002 /dev/hda3
  brw-rw---- 1 root root 3, 4 Sep 12 2002 /dev/hda4
  brw-rw---- 1 root root 3, 5 Sep 12 2002 /dev/hda5
  brw-rw---- 1 root root 3, 6 Sep 12 2002 /dev/hda6
  brw-rw---- 1 root root 3, 7 Sep 12 2002 /dev/hda7
  brw-rw---- 1 root root 3, 8 Sep 12 2002 /dev/hda8
  brw-rw---- 1 root root 3, 9 Sep 12 2002 /dev/hda9
  【注意】
  检测到的分区
  3 1 60026841 ide/host0/bus0/target0/lun0/part1
  3 2 1 ide/host0/bus0/target0/lun0/part2
  3 5 60026841 ide/host0/bus0/target0/lun0/part5
  根据前面的major和minor号,分别对应hda1/hda2/hda5。
  # mount /dev/hda1 /mnt
  VFS: Can't find ext3 filesystem on dev ide0(3,1).
  VFS: Can't find ext2 filesystem on dev ide0(3,1).
  【注释】
  打印上面的信息并不是表示出错,而是因为/dev/hda1分区是个WINDOW2000的系统,不是ext2/ext3文件系统格式。可以看到下面mount显示为MSDOS系统。
  # mount
  /dev/rd/0 on / type ext2 (rw)
  /proc on /proc type proc (rw)
  /dev/hda1 on /mnt type msdos (rw)
  # cd /mnt
  # ls
  adobeweb.log boot.ini config.sys mymusi~1 pagefile.sys
  arcldr.exe bootfont.bin docume~1 ntddk progra~1
  arcsetup.exe comreads.dbg io.sys ntdetect.com recycled
  autoexec.bat comused.dbg msdos.sys ntldr winnt
  # df
  Filesystem 1k-blocks Used Available Use% Mounted on
  /dev/rd/0 3963 3960 0 100% /
  /dev/hda1 60012160 4659904 55352256 8% /mnt
  有时候检测不到硬盘,可能的原因有:
  1、ppcboot.bin不正确,因为有的版本的ppcboot把片选WS调得太快了,导致无法正确检测到硬盘。
  2、底板上的245做双向的BUFFER被焊成244了。

29、关于HHPPC8xx烧写的问题
  执行./flash使得minicom进入RAM ppcboot的提示符后,
  tftp 0 ppcboot.bin
  烧写完成后,
  要如下确认一下是否真正烧写到FLASH里面去了:
  执行:
  md 40000000
  看里面的内容和你在REDHAT PC机器上执行:
  hexdump ppcboot.bin
  两个的前面一段的内容是否一致?
  若md 40000000显示全部为FF,就表明FLASH根本没有烧写进去,
  你再执行tftp 0 ppcboot.bin试一次,
  这种有时烧写不进去的原因是板上焊接的FLASH的型号略有差别,都是兼容的,
  但速度可能又区别,有的是70ns的,而有的又是90ns的,但多烧几次,必然是可能烧入的。

30、PowerPC系列ppcboot的编译问题
  在/LinuxPPC/usr/src/ppcboot-1.1.5(.ram)目录下,执行以下命令:
  make clean
  make clobber
  make dep
  make TQM860L_config
  make
  则/LinuxPPC/usr/src/ppcboot-1.1.5目录下的ppcboot.bin就是将要烧写到板子上的ppcboot.bin 文件,把此文件拷贝到宿主机/tftpboot目录下,以便于以后下载烧写。

若执行make时,出现这样的错误提示:
  make[2]: Entering directory `/LinuxPPC/usr/src/ppcboot-1.1.5.ram/tools/gdb'
  gcc -Wall -pedantic -O -I/opt/powerpc/include -c -o astest.o astest.c
  astest.c: In function `main':
  astest.c:84: `true' undeclared (first use in this function)
  astest.c:84: (Each undeclared identifier is reported only once
  astest.c:84: for each function it appears in.)
  make[2]: *** [astest.o] Error 1
  make[2]: Leaving directory `/LinuxPPC/usr/src/ppcboot-1.1.5.ram/tools/gdb'
  make[1]: *** [subdirs] Error 1
  make[1]: Leaving directory `/LinuxPPC/usr/src/ppcboot-1.1.5.ram/tools'
  make: *** [subdirs] Error 1
  请修改/LinuxPPC/usr/src/ppcboot-1.1.5.ram/tools/gdb/astest.c文件中的一行,把true改成1,再执行make即可。

31、修改HHPPC852T中PPCBOOT中的开发板和TFTP server IP地址
  ROM版:修改/LinuxPPC/usr/src/ppcboot-1.1.5/net/net.c
  RAM版:修改/LinuxPPC/usr/src/ppcboot-1.1.5.ram/net/net.c文件中的这样两行:
  NetOurIP = 0xc0a802a0;/*hw getenv_IPaddr("ipaddr"); */
  NetServerIP = 0xc0a802C7;/*hw getenv_IPaddr ("serverip"); */
  其中的0xc0a802a0表示本机十六进制IP地址,也即IP地址为192.168.2.160;服务器的IP地址为192.168.2.199

32、HHPPC852T的烧写过程
  我本想加入我自己的应用程序到板子上,可是烧写完linux.bin文件后,也提示我烧写成功,但开发板启动后并没有我加入的应用程序,这是怎么回事?
   HHPPC852T的烧写过程与HHPPC823(或HHPPC860)的烧写稍微有一点不一样,823或860是在加载BDM的情况下一口气烧写完ppcboot和linux.bin。而烧写852T时烧写ppcboot需要BDM支持,烧写linux.bin文件时无须BDM支持。大致过程如下:
  拷贝852T需要的ppcboot.bin和linux.bin文件到宿主机的/tftpboot目录下,连接好开发板,设置好宿主机的IP地址。
  a.在宿主机的/LinuxPPC/CDK/bdmtools目录下键入./flash;
  b.在minicom中键入tftp 0 ppcboot.bin,等待ppcboot烧写完成;
  c.按一下开发板的复位键,立即在minicom中按一下回车,使开发板进入"=>"提示符;
  d.在minicom中键入tftp 0 linux.bin,等待linux.bin文件(内核和文件系统)烧写完成。
  HHPPC823(或HHPPC860)的烧写没有c这一步。如果你也是一口所烧写完linux.bin文件,它也提示你linux.bin成功烧写,其实linux.bin并没有烧写进去。以后如果你仅更新linux.bin,则无须加载BDM,请你从上面的c步开始烧写。





此用户离线!
共计在线时长60分钟2009/11/26 21:52:01
[ 资料 ] [ 短信 ] [ 好友 ] [ 文集 ] [ 引用 ] [ 回复 ] 点击返回顶部

cinde (附小一年级)
第2楼 [ 字体: ] [ 编辑 ] [ 报告 ] [评分]
Rank:1
Rank:1
UID 74
帖子 13
积分 29 点
金币 56 枚
魅力 22 度
注册 2009年12月4日
回复:华恒PowerPC系列嵌入式Linux开发板常见问题解答

表情图标EM1




此用户离线!
共计在线时长30分钟2009/12/4 9:32:25
[ 资料 ] [ 短信 ] [ 好友 ] [ 文集 ] [ 引用 ] [ 回复 ] 点击返回顶部

清风细雨 (附小一年级)
第3楼 [ 字体: ] [ 编辑 ] [ 报告 ] [评分]
Rank:1
Rank:1
UID 127
帖子 6
积分 14 点
金币 27 枚
魅力 11 度
注册 2009年12月19日
回复:华恒PowerPC系列嵌入式Linux开发板常见问题解答

表情图标EM1




此用户离线!
共计在线时长30分钟2009/12/19 9:38:50
[ 资料 ] [ 短信 ] [ 好友 ] [ 文集 ] [ 引用 ] [ 回复 ] 点击返回顶部

« 首页1 »2/共1页


查看积分策略说明快速回复你的内容
快捷回复标题 (选填) 快捷插入表情图标
验 证 码  点击获取验证码
快捷回复内容

自动复制

Powered by TEAM 2.0.5 Release - ACC © 2005 Team5 Studio All rights reserved