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

原创 2007年09月29日 06:56:00
   从corebld的实现可以看出,corebld本身是不会对ELF文件中的代码进行重新定位的,这点与在A核中运行的程序不同。这就要求在编译生成要在B核中运行的程序的时候,链接器就必须设置好每个Section的代码在绝对地址空间中的位置。要达到这个目的,要求在编写B核程序的时候要同时通过lds文件指定目标代码的位置。
以下代码就是user/blkfin-apps/corebld/coreb.lds中的内容,在链接B核程序的时候可以修改makefile将这个文件链接进去即可。
INCLUDE bf561.lds
 
PHDRS {
     text PT_LOAD ;
     data PT_LOAD ;
     bss PT_LOAD ;
}
 
SECTIONS {
     ENTRY(start)
 
     . = SIZEOF_HEADERS;
 
     .text : { . = ALIGN(4); *(.text) } >MEM_L1_CODE_A :text
     .data : { . = ALIGN(4); *(.data) } >MEM_L1_DATA_A :data
     .bss : { . = ALIGN(4); *(.bss)
          . = ALIGN(4); __stack_bottom = .;
           . = 0x1000;   __stack_top = .;
         } >MEM_L1_DATA_B :bss
}
至于主程序的编写可以参考user/blkfin-apps/corebld/coreb.S,对其中的一条跳转指令做适当修改即可:
 
.global _real_start;
_real_start:
     /* Enable interrupts */
     [--sp] = reti;
     r0 = [sp++];
 
     /* Disable WatchDog */
     p0.l = (WDOGB_CTL & 0xFFFF);
     p0.h = (WDOGB_CTL >> 16);
     r0 = ((0xad << 4) | (0x3 << 1))(z);
     w[p0] = r0;
 
// 在此处插入跳转指令
 
do_nothing:
     IDLE;
     jump do_nothing;
 
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

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

 我们知道,BF561是由两个相同的内核组成的,而ucLinux只使用了其中的A核,在正常情况下B核是不工作的。但是在uclinux for bf561以驱动的方式提供了对B核操作的可能,而且还提供了...
  • lights_joy
  • lights_joy
  • 2007年09月27日 17:53
  • 1475

在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

【OpenCV】图像处理(二)图像形态学

最近一直在看一些关于图像处理中的图像形态学和图像的局部分割的东西,一直也没时间去整理记录下相关的内容。今天这篇博文中,我们将重点讨论图像形态学中最基本的转换-膨胀和腐蚀。膨胀和腐蚀能用来做什么?可以用...
  • w12345_ww
  • w12345_ww
  • 2015年05月17日 19:46
  • 605

【奔跑的FPGA】part one--ip核仿真流程

最近应导师要求在学习FPGA,看了一段时间代码,感觉云里雾里啊,按照树上的小例子搭建了几个仿真的小程序,感觉没什么成就感,然后就接触到了ip核的概念,觉得很强大,很方便。经过几天的努力(本人不是比较笨...
  • u011153192
  • u011153192
  • 2016年07月16日 11:24
  • 1624

核聚类与支持向量聚类

  核聚类与支持向量聚类   聚类是数据挖掘中用来发现数据分布和隐含模式的一项重要技术[1]。作为一种常见的数据分析工具和无监督机器学习方法,聚类的目的是把数据集合分成若干类(或簇),使得每个类中的数...
  • chl033
  • chl033
  • 2009年11月02日 17:30
  • 6357

Xilinx DDS IP设置

DDS(Direct  Digital  Frequency  Synthesizer)
  • yundanfengqing_nuc
  • yundanfengqing_nuc
  • 2015年04月15日 14:27
  • 3983

四核8线程与八核的区别

四核八线程是指使用了超线程技术 , 把一个物理核心,模拟成 两个逻辑核心, 理论上要像八颗物理核心一样在同一时间执行八个线程,所以设备管理器和任务管理器中会显示出八个核心,但事实上并不是真正的八个核心...
  • QQQQQQ654
  • QQQQQQ654
  • 2016年11月14日 12:39
  • 6016

ALTERA FFT IP核使用

ALTERA FFT IP核使用14.0以前IP核的调用都差不多,以下就只介绍13.0和15.0这两个版本的IP核调用过程 FFT的ip核仿真和综合是不需要license的,编译需要license ...
  • mdpsdhr
  • mdpsdhr
  • 2015年10月20日 11:23
  • 7080

[学习] FPGA之ip核

>> ip核之概念和分类IP(Intellectual Property)内核模块是一种预先设计好的甚至已经过验证的具有某种确定功能的集成电路、器件或部件。它有几种不同形式。IP内核模块有行为(beh...
  • guopeixin
  • guopeixin
  • 2009年10月10日 16:23
  • 6057
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在uclinux for bf561中使用B核(4):B核代码的编写
举报原因:
原因补充:

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