14
实实 实实实实 一: SoCLib 实实实 SoC 实实 实实实

实验一:构建基于 SoCLib 的单核 SoC

Embed Size (px)

DESCRIPTION

实验一:构建基于 SoCLib 的单核 SoC. 王 洁、袁子超. 单核 SoC 硬件平台. 地址空间分配( Memory Table ). ADDRESS SPACE SEGMENTATION ( ./HW/ segmentation.h ):. 地址空间分配( Memory Table ). 代码定义( ./HW/top.cpp ):. Memory Table:. SoC 启动 过程 (有 bootloader ). 执行流程. 输入程序及数据存放. 放入了 MEMORY 中. 存放方法实现代码( ./HW/top.cpp ):. 运行结果. - PowerPoint PPT Presentation

Citation preview

Page 1: 实验一:构建基于 SoCLib 的单核 SoC

实验一:构建基于 SoCLib的单核 SoC

王洁、袁子超

Page 2: 实验一:构建基于 SoCLib 的单核 SoC

单核 SoC 硬件平台

Generic Micronetwork

TEXT

DATA

STACK

CPU CORE

ICACHE DCACHE

VCI_TTY

MEMORY

MIPS R3000A

IT0

VCI_TIMER VCI_FDACCESS VCI_FRAMEBUFFER

VCI_LOCKS

IT1 IT2

Page 3: 实验一:构建基于 SoCLib 的单核 SoC

地址空间分配( Memory Table )ADDRESS SPACE SEGMENTATION ( ./HW/segmentation.h ):

Page 4: 实验一:构建基于 SoCLib 的单核 SoC

地址空间分配( Memory Table )代码定义( ./HW/top.cpp ):

Name Address

cache0 0

reset|excep|text|data 1

tty 2

semlocks_seg 3

timer 4

fd_access 5

frame_buffer 6

Memory Table:

Page 5: 实验一:构建基于 SoCLib 的单核 SoC

SoC 启动过程(有 bootloader )

执行流程

Page 6: 实验一:构建基于 SoCLib 的单核 SoC

输入程序及数据存放放入了 MEMORY 中

存放方法实现代码( ./HW/top.cpp ):

Page 7: 实验一:构建基于 SoCLib 的单核 SoC

运行结果存放在帧缓存( VCI_FRAMEBUFFER:0xC4000000 )中

代码实现( ./SW/mjpeg_seq/sources/dispatch.c ):

Page 8: 实验一:构建基于 SoCLib 的单核 SoC

性能评估:运行代码所用时间统计

代码实现( ./SW/mjpeg_seq/sources/dispatch.c ): 调用:

Page 9: 实验一:构建基于 SoCLib 的单核 SoC

单核 SoC 实验步骤• 实验平台搭建安装

• 修改示例源代码

• 分别编译 HW 和 SW 部分

• 运行示例获得结果

Page 10: 实验一:构建基于 SoCLib 的单核 SoC

修改源代码• 按照指导步骤依次修改一下文件:• HW• top.cpp• segmentation.h• platfor_desc

• SW• fetch.h• dispath.c• mips

Page 11: 实验一:构建基于 SoCLib 的单核 SoC

源代码问题

• 问题一:• 在添加 Signals 部分,对 fd_access 中操作:soclib::caba::VciSignals<vci_param>signal_vci_fd_access("signal_vci_fd_access";

改为soclib::caba::VciSignals<vci_param>signal_vci_fd_access("signal_vci_fd_access");

Page 12: 实验一:构建基于 SoCLib 的单核 SoC

问题二

Page 13: 实验一:构建基于 SoCLib 的单核 SoC

问题二解决办法:• 修改 HW 中的 segmentation.h

• 将 #define DATA_BASE 0xE0000000• 修改为 #define DATA_BASE 0x20000000

• 修改 “ /SW/mjpeg_seq/ldscripts/mips”• 将 .sdata 0xE0000000 : { *(.sdata*) *(.scommon*) } > data :data• 修改为 .sdata 0x20000000 : { *(.sdata*) *(.scommon*) } > data :data

Page 14: 实验一:构建基于 SoCLib 的单核 SoC

实验运行结果: