用户手册9-1dm8148的syslink编译及使用_第1页
用户手册9-1dm8148的syslink编译及使用_第2页
用户手册9-1dm8148的syslink编译及使用_第3页
用户手册9-1dm8148的syslink编译及使用_第4页
用户手册9-1dm8148的syslink编译及使用_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Revi HistoryDraft DateRevi No.Description1.初始版本。2016/05/11V1.0公司官网:公司总机:020-8998-6280 技术:020-3893-97341/35技术:销售邮箱:技术邮箱:suDM8148 的 Syslink 编译及使用目录1syslink 配置、编译、安装32syslink 示例程序演示11syslink 示例程序142.6.1ex01_oworld152.6.2ex02_messageq162.6.3ex03_notify192.6.4ex04_sharedregion222.6.5ex05_heapbufmp242.6.6

2、ex06_listmp252.6.7ex07_gatemp282.6.8ex08_ringio30帮助35公司官网:公司总机:020-8998-6280 技术:020-3893-97342/35技术:销售邮箱:技术邮箱:su2.6运行 syslink 示例程序132.5关闭 GUI 等等132.4安装 syslink 驱动132.3运行 syslink 示例程序122.2安装 syslink 驱动和示例程序到文件系统112.1编译 syslink 示例程序101.3编译 syslink91.2配置 syslink31.1配置1档的内容搭建Linux开发环境。确保已经正常安装好ezsdk_dm8

3、14x-evm_5_05_02_00_setuplinux。因为syslink组件在安装时会解压在其安装目录下ti-ezsdk_dm814x-evm_5_05_02_ponent-sour/syslink_2_20_02_20/,下面将介绍syslink配置、编译和示例演示。在开始syslink编译之前,请确保以下几点:(1)(2)已安装光盘里的 CodeSourcery 交叉编译工具链。内核源码正确编译。1.1 配置 syslink进入/home/tronlong/ti-ezsdk_dm814x-ponent-sour/syslink_2_20_02_20,打开配置文件 products.m

4、ak。Host#cd /home/tronlong/ti-ezsdk_dm814x-ponent-sour/syslink_2_20_02_20Host#gedit products.mak图 1地方:备注:由于配置容易出错,已将配置文件 product.mak 放在光盘 image 目录下,可以将此文件覆盖/ti-ezsdk_dm814x-ponent-sour/syslink_2_20_02_20/pro ducts.mak,然后再根据个人的实际情况小修改即可。(1)DEVICE = _your_device_ 改为DEVICE = TI814X公司官网:公司总机:020-8998-628

5、0 技术:020-3893-97343/35技术:销售邮箱:技术邮箱:su/表示编译 DM814X用户要配置、编译、安装使用syslink,请先按照搭建DM8148的Linux开发环境文syslink、编译、安装图 2(2)GP = _your_os_改为GP = Linux/表示编译主机 linux图 3(3)SDK = _your_sdk_改为SDK = EZSDK图 4(4)EXEC_DIR = _your_filesys_改为EXEC_DIR = /home/tronlong/ti-ezsdk_dm814x-evm_5_05_02_00/filesystem/rootfs/syslin

6、k 驱动和演示程序安装路径,一般设置为 nfs 或者SD 卡的文件系统,需提图 5公司官网:公司总机:020-8998-6280 技术:020-3893-97344/35技术:销售邮箱:技术邮箱:su前解压好/SDK 类型为 NONE(5)DEPOT = _your_depot_folder_改为DEPOT = /home/tronlong/ti-ezsdk_dm814x-evm_5_05_02_00图 6(6)将以修改后的内容标记如下,用户一定要根据自身实际做一定修改:SYSLINK_INSTALL_DIR = $(CURDIR)# List of supported devi(choose

7、 one): OMAP3530, TI816X, TI814X, OMAPL1XX,#TI813X, TI811X#DEVICE = # Master core (GPP) OS type (choose one): Linux, Qnx, Bios#GP = Linux# SysLink HLOS driver options variable (choose one): 0 or 1#SYSLINK_BUILD_DEBUG=1SYSLINK_BUILD_OPTIMIZE=0SYSLINK_TRACE_ENABLE=1# SysLink HLOS driver Notify options

8、(choose one): NOTIFYDRIVERSHM,#NOTIFYDRIVERCIRC#公司官网:公司总机:020-8998-6280技术:020-3893-97345/35技术:销售邮箱:技术邮箱:suTI814X路径/EZSDK 的安装SYSLINK_NOTIFYDRIVER=NOTIFYDRIVERSHM# SysLink HLOS driver MessageQ Transport options (choose one): TRANSPORTSHM,#TRANSPORTSHMNOTIFY, TRANSPORTSHMCIRC#SYSLINK_TRANSPORT=TRANSPOR

9、TSHM# Set SDK type when building for a TI SDK kit (choose one): EZSDK or NONE#SDK = # Define root dir to install SysLink driver and sles for file-system#EXEC_DIR = # Define file format for loader and slave executables (choose one): COFF, ELF#LOADER = ELF# Optional:mended to install all dependent com

10、ponents in one folder.#DEPOT = # Define the product variables for the device you will be using.# For OMAP3530 device #ifeq ($(DEVICE),OMAP3530)LINUXKERNEL= $(DEPOT)/_your_linux_kernel_install_CGT_ARM_INSTALL_DIR= $(DEPOT)/_your_arm_code_gen_install_公司官网:公司总机:020-8998-6280技术:020-3893-97346/35技术IPC_IN

11、STALL_DIR= $(DEPOT)/_your_ipc_install_BIOS_INSTALL_DIR= $(DEPOT)/_your_bios_install_XDC_INSTALL_DIR= $(DEPOT)/_your_xdctools_install_# If LOADER=ELF then below elf tools path is required else set C64P pathifeq ($(LOADER),ELF)CGT_C64P_ELF_INSTALL_DIR= $(DEPOT)/_your_c64pelf_code_gen_install_elseCGT_C

12、64P_INSTALL_DIR= $(DEPOT)/_your_c64p_code_gen_install_endif# For TI816X device #else ifeq ($(DEVICE),TI816X)LINUXKERNEL= $(DEPOT)/_your_linux_kernel_install_CGT_ARM_INSTALL_DIR= $(DEPOT)/_your_arm_code_gen_install_CGT_ARM_PREFIX= $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-IPC_INSTALL_DIR= $(D

13、EPOT)/_your_ipc_install_BIOS_INSTALL_DIR= $(DEPOT)/_your_bios_install_XDC_INSTALL_DIR= $(DEPOT)/_your_xdctools_install_CGT_C674_ELF_INSTALL_DIR= $(DEPOT)/_your_c674elf_code_gen_install_# SYS/BIOS timer frequency (ti.sysbios.timers.dmtimer.Timer.Freq)TI81XXDSP_DMTIMER_FREQ= 32768# If SDK=NONE then be

14、low tools path is requiredifeq ($(SDK),NONE)CGT_M3_ELF_INSTALL_DIR= $(DEPOT)/_your_m3elf_code_gen_install_endif公司官网:公司总机:020-8998-6280 技术:020-3893-97347/35技术# For TI814X device #else ifeq ($(DEVICE),TI814X)# Set one of the following OS variables/开发板 Linux 内核路径LINUXKERNEL= /media/DM8148/linux-2.6.37Q

15、NX_INSTALL_DIR= $(DEPOT)/_your_qnx_install_CGT_ARM_INSTALL_DIR= /home/tronlong/CodeSourcery/Sourcery_G+_Lite/交叉编译器安装路径CGT_ARM_PREFIX= $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-IPC_INSTALL_DIR= $(DEPOT)/component-sour/ipc_1_24_03_32BIOS_INSTALL_DIR= $(DEPOT)/component-sour/bios_6_33_05_46XDC_

16、INSTALL_DIR= $(DEPOT)/component-sour/xdctools_3_23_03_53CGT_C674_ELF_INSTALL_DIR= $(DEPOT)/dsp-devkit/cgt6x_7_3_4# SYS/BIOS timer frequency (ti.sysbios.timers.dmtimer.Timer.Freq)TI81XXDSP_DMTIMER_FREQ= 20000000# If SDK=NONE then below tools path is requiredifeq ($(SDK),NONE)CGT_M3_ELF_INSTALL_DIR= $

17、(DEPOT)/_your_m3elf_code_gen_install_endif# If GP=Bios then below tools path is requiredifeq ($(GP),Bios)CGT_A8_ELF_INSTALL_DIR= $(DEPOT)/_your_a8elf_code_gen_install_endif公司官网:公司总机:020-8998-6280 技术:020-3893-97348/35技术图 7配置完成后,保存退出。如果配置有问题,将会导致 syslink 编译失败,所以如果失败,请仔细检查您的配置是否和您的 Ubuntu 实际配置一样。编译 sys

18、link1.2接下来开始编译 syslink,进入/home/tronlong/ti-ezsdk_dm814x-evm_5_05_02_00/component-sour/syslink_2_20_02_20,执行以下命令:Host#make syslink图 8编译成功如下图所示:公司官网:公司总机:020-8998-6280技术:020-3893-97349/35技术图 91.3 编译 syslink 示例程序_2_20_02_20目录,执行以下命令:Host#make sles图 10编译成功如下图所示:公司官网:公司总机:020-8998-6280技术:020-3893-973410/

19、35技术图 11至此,整个 syslink 已经编译完成。2syslink 示例程序演示2.1在当前目录,执行以下命令将 syslink 驱动和示例程序安装到文件系统:Host#sudo make install图 12安装成功如下图所示:公司官网:公司总机:020-8998-6280 技术:020-3893-973411/35技术图 13执行以下命令查看是否已经安装了 syslink 驱动和示例程序。Host#cd /home/tronlong/ti-ezsdk_dm814x-evm_5_05_02_00/filesystem/rootfsHost#ls lib/modules/2.6.37

20、/kernel/drivers/dsp/图 14可以看到在文件系统lib/modules/2.6.37/kernel/drivers/dsp/目录下有 syslink 驱动程序 syslink.ko 文件和文件系统根目录下有ex*_#的示例程序。2.2 运行 syslink 示例程序要运行 syslink 示例程序,还需要将 U-boot 做一定的参数调整。命令如下,修改并保存,如下图所示:公司官网:公司总机:020-8998-6280技术:020-3893-973412/35技术:销售邮箱:技术邮箱:su#saveenv图 152.3 安装 syslink 驱动使用以上做好的文件系统做好新的

21、 SD 卡启动开发板,进入开发板文件系统执行以下 命令安装 syslink 驱动:#insmod /lib/modules/2.6.37/kernel/drivers/dsp/syslink.ko TRACE=1 TRACEFAILURE=1图 162.4 关闭 GUI 等等运行 syslink 前需要将 GUI 等不必要的固件都关闭掉。#/etc/init.d/pvr-init stop#/etc/init.d/matrix-gui-e stop#/etc/init.d/load-hd-firmware.sh stop/非必须操作#modprobe syslink2.5 运行 syslink

22、 示例程序进入到 syslink 例程目录下,可以看到有 8 个例程:公司官网:公司总机:020-8998-6280 技术:020-3893-973413/35技术:销售邮箱:技术邮箱:su#mmc rescan 0; foad mmc 0 $loadaddr uImage; bootm $loadaddr# setenv bootargs console=ttyO0,115200n8 rootwait root=/dev/mmcblk0p2 rw m em=224M0 x80000000 mem=768M0 x90000000 vmalloc=500M notifyk.vpssm3_sva=

23、0 xBF 900000 ip=off noinitrd#cd /usr/share/ti/syslink-exles/TI814X图 17进入到oworld 目录,并运行 runall 的 s 批处理命令:#./runall.sh成功运行如下图所示:图 182.6以下对例程进行说明。每个示例目录中有 readme.txt 和 run.sh 文件说明如何使用示例,而在开发板中运行/runall.sh 是运行了所有的 syslink 示例程。备注:以下内容摘录于Slaveloader在 DM8148 的 ARM Linux 操作系统中,syslink 提供了 slaveloader 组件去加载、

24、启动、停止 DSP 处理器,实现了对 DSP 核的管理,同时也是使用 slaveloader 组件去运行 syslink 示例程序。运行 slaveloader 组件有四个参数:公司官网:公司总机:020-8998-6280技术:020-3893-973414/35技术syslink 示例程序参数 3:File path/可执行文件路径,当参数 2 为 startup/load/all/时必填/map 文件,当处理器 MMU 功能开启时必填运行命令格式如下图所示:图 19可以通过各个 syslink 示例目录下的 run.sh查看使用slaveloader 运行示例程序的具体方法。下图是各个示

25、例的功能简介:图 20备注:在单独运行各个示例程序前,务必先安装 syslink 驱动,安装命令:#insmod /lib/modules/2.6.37/kernel/drivers/dsp/syslink.ko TRACE=1 TRACEFAILURE=1注意:如果用户在新制的 SD 卡出现了加载内核时,提示无法找到 syslink,这个时候先要确保,已经按照文档Linux SD 系统启动卡制作方法把模块安装完毕,然后把 SD 卡插回电脑,在 Ubuntu 下将ROOTFS/etc/路径下的:rc5.d/S01load-hd-firmware.sh和rc6.d/K99load-hd-firm

26、ware.sh删除掉即可。下面将针对每个示例进行。2.6.1ex01_oworldoworld公司官网:公司总机:020-8998-6280 技术:020-3893-973415/35技术参考英文资料:图 21#cd oworld/#ls#./run.sh成功运行提示如下图:图 222.6.2ex02_messageq公司官网:公司总机:020-8998-6280技术:020-3893-973416/35技术图 23参考英文资料:图 24#cd messageq/#ls#./run.sh成功运行提示如下图:公司官网:公司总机:020-8998-6280 技术:020-3893-973417/3

27、5技术图 25(1)(2)实现了处理期间变长消息的传递;消息的传递都是通过操作消息队列来实现的;(3)每个消息队列可以有多个写者,但只能有一个读者;每个任务(task)可以对多个消息队列进行读写;(4)一个宿主在准备接收消息时,必须先创建消息队列,而在发送消息前,需要打开预定的接收消息队列;常用在以下场景中:(1)(2)(3)在消息传递中有多个写者,但仅有一个读者;所需要传递的消息超过 32bit,且长度可变;读写者的缓冲区大小相同;处理期间需要频繁传递消息,在这种情况下,消息被依次放入队列,能保证不会丢消息;公司官网:公司总机:020-8998-6280 技术:020-3893-973418

28、/35技术(4)消息队列为空时,调用 MessageQ_get()获取消息时会被阻塞,直到消息队列被写入消息;(5)支持处理器间移动消息队列,在这种情况下,调用 MessageQ_open()来定位队列位置,而消息传递部分代码不需要改动;提供的 API 接口:(1)(2)列,并分配相应空间(3)理器上的 QueID 的地址(4)(5)为消息队列/注销堆内存:MessageQ_registerHeap()/MessageQ_unregisterHeap()(6)(7)(8)(9)(10)(11)2.6.3ex03_notify信方式。参考英文资料:公司官网:公司总机:020-8998-6280技

29、术:020-3893-973419/35技术图 26#cd notify/#ls#./run.sh成功运行提示如下图:图27公司官网:公司总机:020-8998-6280技术:020-3893-973420/35技术(1)同一个中断号可以多个事件,同一个事件可以有多个回调函数或者多个宿主(可以是处理器、线程或者任务),事件被触发后所有宿主都会被唤醒;一个事件可以接收多个宿主发送来(notification),事件所携带的参数最大支持 32bit;事件是有优先级的,EventId 越小优先级越高,事件 0 的优先级最高,随着EventId增大优先级依次递减;当多个事件被触发,优先级最高的会最先响

30、应;(4)Notify 模块使用硬件中断,因此不能被频繁调度。提供的 API 接口:(1)(2)Notify_registerEventSingle()/Notify_unregisterEventSingle()(3)(4)(5)(6)Notify_numLines()/Notify_restore()Notify 组件常用于传递附带消息少于 32bit 的场景,如信令传递、buffer 指针传递等。在信令传递时使用高优先级的事件,如事件 0。而在传递 buffer 指针是可以使用低优先级的事件,如事件 30 等。在 Notify_sentEvent() API 中带有参数 waitClea

31、r,该参数为可选参数,如果 waitClear为 TRUE,这就意味着多宿主事件无法及时响应,必须等待前一宿主事件结束后才能响应 下一宿主;如果 waitClear 为 FALSE,最好不要为事件附带参数,否则多宿主事件可能会由于消息被覆盖而出现丢消息的现象。 该 API 最好不要在中断服务程序(ISR)中调用(特别是 waitClear = TRUE 时),否则会导致 中断调度出现异常(表现之一:高优先级的中断响应会延迟)。此外该 API 不能再使用 GateMP 模块锁保护的程序段中调用,否则可能会导致操作系统死锁。 由于其他模块使用了 Notify 机制,因此在 SysLink 中预留了

32、部分事件号,这部分事件公司官网:公司总机:020-8998-6280 技术:020-3893-973421/35技术号用户需要慎重选用(如果你没有使用其他组建的话,可以考虑占用这部分事件号),在事件前可以使用 Notify_eventAvailable()来检查该事件是否可用,即该中断号上的该事件号是否被。表格 12.6.4ex04_sharedregion普遍会遇到共享内存虚拟地址转换问题。参考英文资料:图 28#cd sharedregion/#ls#./run.sh公司官网:公司总机:020-8998-6280技术:020-3893-973422/35技术成功运行提示如下图:图 29提供

33、的 API 接口:(1)(2)(3)(4)SharedRegion_clearEntry()SharedRegion_entryInit()SharedRegion_getCacheLineSize()SharedRegion_getEntry()、SharedRegion_setEntry()(5)(6)(7)(8)SharedRegion_getHeap()SharedRegion_getId()SharedRegion_getIdByName()SharedRegion_getNumRegions()(9)(10)(11)(12)SharedRegion_getPtr()SharedRe

34、gion_getSRPtr()SharedRegion_isCacheEnabled()SharedRegion_translateEnabled()一般来说配置一个 SharedRegion 需要关心以下几个参数:公司官网:公司总机:020-8998-6280技术:020-3893-973423/35技术(1)base:The base address,共享内存区的址,这个所谓的址实际上是后的虚拟地址,并非物理地址;(2)len:The length,共享内存区的大小,对于同一片共享内存,其所有者的查找表中该项值应该是相同的;(3)(4)name:The name of the region

35、,该共享内存区的名字;isValid:Whether the region is valid,对于该处理器而言,是否具限去该共享内存区;(5)ownrocId:The id of the prons the region,管理该内存区的处理sor whi器 ID,该处理器具有创建 HeapMemMP 的权限,而其他处理器只有使用的权限;(6)(7)(8)cacheEnable:Whether the region is cacheable,是否为该共享内存区创建 cache;cacheLineSize:The cache line size,cache 的大小;createHeap:Wheth

36、er a heap is created for the region,是否使用 Heap(堆)管理该内存区域;2.6.5ex05_heapbufmp参考英文资料:图 30#cd heapbufmp/#ls公司官网:公司总机:020-8998-6280 技术:020-3893-973424/35技术#./run.sh成功运行提示如下图:图 31提供的 API 接口:(1)(2)(3)(4)(5)2.6.6ex06_listmp以由多个处理器共同,共同使用。参考英文资料:公司官网:公司总机:020-8998-6280技术:020-3893-973425/35技术HeapBufMP 分配/内存:H

37、eapBufMP_alloc()/HeapBufMP_free()图 32#cd listmp/#ls#./run.sh成功运行提示如下图:图 33公司官网:公司总机:020-8998-6280 技术:020-3893-973426/35技术ListMP 的实现区别于一般的双向循环链表,因此它不仅具有双向循环链表的特性外,还增添了其他的特性,比如以下几点:(1)(2)实现了简单的多宿主协议,支持多个读写者(multi-reader、multi-writee);使用 Gate 作为保护机制,防止多个宿主处理器同时该链表; ListMP 的实现并未加入通知机制,如果需要的话,可以在外部封装时引入

38、Notify 机制 来实现;使用 ListMP 机制来管理的 buffers 都需要从共享内存区分配,包括从堆内存分配的 buffers 以及动态分配的内存。常用在以下场景中:(1)需要被多个宿主并且需要频繁传递消息或者数据;(2)可用于无规则的消息传递,基于链表实现,因此读者可以遍历所有对象,并选出需要的对象进行处理;如果硬件支持快速队列,则无法完成队列遍历操作;(3)可以自定义消息优先级,同样是基于链表实现,读者可以随意的选择在链表头部还是链表的尾部来消息或者实现链表对象的位置调整,进而实现消息的优先级选择;如果硬件支持快速队列,则无法完成队列遍历操作;(4)无内置通知机制,可以灵活的外部

39、通知机制来实现。譬如根据实际情况,选用Notify 来实现,亦或是使用选用 MessageQ 则可以使用最少的中断资源实现性能优良机制,缺点是需要额外的代码实现通知机制;提供的 API 接口:(1)(2)参数初始化:ListMP_Params_init()创建/销毁:ListMP_create()/ListMP_delete()(3)(4)打开/关闭:ListMP_open()/ListMP_close()相关链表操作:判断链表空:ListMP_empty()获取保护锁:ListMP_getGate()获取链表头/表尾:ListMP_getHead()/ListMP_getTail()链表操作

40、:ListMP_insert()获取链表上游元素/下游元素:ListMP_next()/ListMP_prev()元素到链表头/尾:ListMP_putHead()/ListMP_putTail()公司官网:公司总机:020-8998-6280技术:020-3893-973427/35技术删除元素:ListMP_remove()2.6.7ex07_gatemp享资源比作房子,那么 GateMP 就是这个房子的门。GateMP 组件实现了开关门的机制, 用于保护共享资源一次只被一个处理器读写。根据 SOC 硬件资源配置的不同,GateMP的实现有所不同。对于硬件支持 Hardware Spinlock 的可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论