在uclinux for bf561中使用B核(1):示例实践

原创 2007年09月27日 17:53:00
 
我们知道,BF561是由两个相同的内核组成的,而ucLinux只使用了其中的A核,在正常情况下B核是不工作的。但是在uclinux for bf561以驱动的方式提供了对B核操作的可能,而且还提供了一个corebld的应用程序,它可以将指定的程序加载到B核中运行。
下面我们就按照user/blkfin_apps/corebld/README中所说的步骤尝试一下吧:
1、在User Settings -> Blackfin app programs中选上BF561 Core B support tools,这样uclinux就会在bin下编译生成corebld这个应用程序和coreb_get_testarg这个程序。此外在test_module目录下还后生成一个dualcore_test.ko的模块,但是在默认情况下这个模块是不会复制到romfs中去的,因此我们需要手工将它复制到romfs目录中去,这样下次make的时候就能打包到uImage中去了。
2、下载uclinux,运行
root:/bin> insmod ./dualcore_test.ko
dualcore_test: module license 'unspecified' taints kernel.
Dual core test module inserted: set testarg = [1]
 @ [feb00000]
这个模块是在A核中运行的,在初始化的时候,它在0xfeb0 0000这个地址写入一个整数1,然后等待B核中运行的程序修改此位置的值,在卸载此模块的时候它将再一次输出0xfeb0 0000这个地址处的值,以此证明B核中的程序修改了这个值。
3、运行
root:/bin> corebld coreb_get_testarg
ffite 2Starting Core B
 00000
wrote 208 bytes to 0x0xff600000
Write 4096 bytes to 0x0xff500000
wrote 4096 bytes to 0x0xff500000
此时B核中的程序coreb_get_test_arg应该修改了0xfeb0 0000的值。
从corebld.c中的代码可知,它其实是将coreb_get_test_arg作为一个普通文件读出来,再提取出相应的可执行代码,调用/dev/coreb提供的功能将这些可执行代码写入到B核的L1 Instruction Memory中,再调用驱动程序的功能开始执行这些代码。从这个过程可以看出,corebld能调用的可执行文件格式是有限的,目前corebld只能分析elf格式的文件。
4、运行
root:/bin> rmmod dualcore_test.ko
Dual core test module removed: testarg = [2]
由此可见,coreb_get_testarg已经将值修改为2了。
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

在uclinux for bf561中使用B核(4):B核代码的编写

   从corebld的实现可以看出,corebld本身是不会对ELF文件中的代码进行重新定位的,这点与在A核中运行的程序不同。这就要求在编译生成要在B核中运行的程序的时候,链接器就必须设置好每个Se...
  • lights_joy
  • lights_joy
  • 2007年09月29日 06:56
  • 1293

在uclinux for bf561中使用B核(3):corebld的实现

 在有了/dev/coreb之后,uclinux还提供了一个工具corebld。它用于将elf格式的文件作为一个普通文件读出来,提取出相应的可执行代码,再调用/dev/coreb提供的功能将这些可执行...
  • lights_joy
  • lights_joy
  • 2007年09月29日 06:54
  • 1238

在uclinux for bf561中使用B核(2): /dev/coreb提供的功能

   由于uClinux只能在A核运行,因此它以驱动的形式提供了对B核的支持。默认配置下此支持是打开的,可以通过Kernel Settings -> Blackfin Processor Option...
  • lights_joy
  • lights_joy
  • 2007年09月29日 06:48
  • 1408

uclinux内核的console(6):调试信息输出

快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com  本文适用于ADI bf561 DSP优视BF561EVB开发板uclinux-2008r1.5...
  • lights_joy
  • lights_joy
  • 2009年03月19日 11:14
  • 3470

如何配置uClinux实现简易HTTP应用(显示web网页)

导读:   1用户选项配置   在用户选项的network application中,选中“Boa”和“httpd”两项服务。   2建立home/httpd目录   修改44b0/makefile...
  • yingfox
  • yingfox
  • 2007年11月12日 20:50
  • 717

嵌入式操作系统uClinux及其源代码分析(ZT)

(太原理工大学 计算机与软件学院 中国 太原030024)摘要:建立在uClinux-2.4.x及兼容三星SNDS100实验板基础之上,对嵌入式操作系统的源代码文件的作用及目录构成进行了分析,并深入分...
  • TrueLie
  • TrueLie
  • 2007年01月20日 13:33
  • 3509

《数字图像处理原理与实践(MATLAB版)》一书之代码Part2

本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part2,涉及该书大致40~135页所覆盖之代码,后续代码将陆续发布,供有需求读者参阅学习...
  • baimafujinji
  • baimafujinji
  • 2014年11月15日 15:48
  • 4197

ucos 和uclinux的区别及各自的特点

uc/os和uclinux操作系统是两种性能优良源码公开且被广泛应用的的免费嵌入式操作系统,可以作为研究实时操作系统和非实时操作系统的典范。本文通过对uc/os和uclinux的对比,分析和总结了嵌入...
  • jc70100322
  • jc70100322
  • 2016年01月20日 19:17
  • 1866

ubuntu 步步为营之uclinux编译和移植(完整版)

本节主要包括(ubuntu10.04) 一,linux下的常用压缩解压缩命令 二,环境建立 三,内核编译 四,移植 一,linux下的常用压缩解压缩命令 在linux下常见...
  • liang890319
  • liang890319
  • 2011年10月05日 10:45
  • 5562

uClinux for bf561中的中断处理(1):中断初始化

    在uClinux初始化的过程中,就会配置好相应的中断向量表,并根据用户的配置来设置外部中断的优先级。/* init/main.c */asmlinkage void __init start_...
  • lights_joy
  • lights_joy
  • 2008年01月10日 14:30
  • 1057
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在uclinux for bf561中使用B核(1):示例实践
举报原因:
原因补充:

(最多只允许输入30个字)