《初级培训讲义》PPT课件.ppt

上传人:小飞机 文档编号:5471361 上传时间:2023-07-10 格式:PPT 页数:50 大小:905KB
返回 下载 相关 举报
《初级培训讲义》PPT课件.ppt_第1页
第1页 / 共50页
《初级培训讲义》PPT课件.ppt_第2页
第2页 / 共50页
《初级培训讲义》PPT课件.ppt_第3页
第3页 / 共50页
《初级培训讲义》PPT课件.ppt_第4页
第4页 / 共50页
《初级培训讲义》PPT课件.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《《初级培训讲义》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《初级培训讲义》PPT课件.ppt(50页珍藏版)》请在三一办公上搜索。

1、RK27平台基础,开发必须的相关资料:SDK软件开发包 VC+编译器 ARM ADS 编译调试器 电路图,datasheet RK2700 Demo板 JTAG仿真器及驱动,内容提要,Q&A,系统和应用软件介绍,仿真、调试、编译、烧录,驱动程序介绍,芯片介绍,内容提要,芯片介绍,系统特性,System OperationDual Core Architecture(ARM7EJC+DSP)Support system boot sequentially from ARM7EJC to DSPSelectable JTAG debug methodARM7EJC debug onlyDSP de

2、bug onlyARM7EJC+DSP dual core debugSelectable booting methodBoot from NOR FlashBoot from Embedded ROMInternal memory spaceDSP IMEM32KwordsDSP DMEM 32KwordsARM7EJC Embedded Sync SRAM 4KbytesARM7EJC Embedded Boot ROM 8Kbytes,LCD 控制器,LCDC Unit is a controller interface to LCD panel,including a 2048X32b

3、it SRAM.Key featuresCompatible MCU and RGB interface。Compatible 8bits series and 24bits parallel RGB interface.Support delta RGB interface panel.Support YUV or RGB image source data input relatively in line.Support 8 grade alpha operations.Support even/odd field mode.Support 4:2:2 or 4:2:0 YUV sourc

4、e data input.Support 16bits or 24bits RGB source data input.Support scale base on YUV source.Support MCU buffer write and bypass mode.,DMA控制器1,AHB DMA(HDMA)Integrated in AHB BUS0Two DMA channels support8 hardware request handshaking supportBuilt-in 32x16 data FIFOSupport hardware and software trigge

5、r DMA transfer mode,DMA控制器2,AHB-to-AHB Bridge(A2A)Integrated between AHB BUS0 and AHB BUS1Provide AHB-to-AHB bus protocol translationSupport AHB-to-AHB DMA or Single AHB DMATwo DMA Channels supportOn-the-fly mode between two level bus support4 hardware request handshaking supportSupport hardware and

6、 software trigger DMA transfer mode,DMA 控制器3,DW DMAIntegrated in AHB BUS1Four DMA Channels support8 hardware request handshaking supportSupport hardware and software trigger DMA transfer modeBuild-in 4 data FIFO:64bytes/64bytes/64bytes/64bytesScatter/Gather transfer supportLLP transfer supportTwo ma

7、ster for on-the-fly support,AHB Master 优先级,Interrupt 优先级(ARM),Interrupt 优先级(DSP),DMA Hardware 请求,System memap,见databook,内容提要,驱动程序介绍,板支持包(BSP)是指位于RK27_SDKSystemdriver目录下的所有代码,包含了芯片内部所有控制器和芯片已有外设的驱动。BSP不依赖于OS和其他系统、应用程序,用户在有需要时,可基于BSP直接进行开发。为适应上层调用需要,所有驱动做了必要的封装,调用驱动时包含头文件hw_include.h 即可引用所有驱动资源。需要修改驱动

8、时,请参考芯片手册。下面举例说明几个常见的驱动:,BSP,(1)接口函数:void Pll_SetARMFreq(nMHz,HCLK_div,PCLK_div)参数说明:nMHz-ARM core频率 HCLK_div-AHB分频值(HCLK_DIV1-基于ARM core频率不分频,HCLK_DIV2-基于ARM core频率二分频)PCLK_div-APB分频值(PCLK_DIV1-基于AHB频率不分频,PCLK_DIV2-基于AHB频率二分频,PCLK_DIV4-基于AHB频率四分频)使用说明:系统初始化或需要频率切换时按照参数说明调用此接口,频率切换设置,I2C使用,1、接口函数I2C

9、_Init(UINT8 SlaveAddress,UINT16 nKHz)初始化I2CI2C_Write(RegAddr,*pData,size,eI2C_mode_t mode)写I2CI2C_Read(RegAddr,*pData,size,eI2C_mode_t mode)读I2CI2C_Deinit(void)反初始化I2C2、注意事项向I2C从设备进行读写操作前需要调用I2C_Init设置设备地址和I2C传输频率;I2C_Init和I2C_Deinit要成对使用;同时只可对同一设备进行读写,GPIO使用,GPIO_PowerOnInit(void);开机初始化GPIOGPIO_Con

10、fig(GPIOPinNum,GpioConfig);配置一个GPIOGPIO_SetPinLevel(GPIOPinNum,level);设GPIO电平GPIO_GetPinLevel(GPIOPinNum);读GPIO电平GPIO_SetPinDirection(GPIOPinNum,direction);设GPIO方向GPIO_EnableIntr(GPIOPinNum);打开GPIO中断GPIO_DisableIntr(GPIOPinNum);关闭GPIO中断注意:GPIO分PA、PB、PC、PD四组32个,可分组配置,也可单独配置某一个口。大多数GPIO都有复用,因此在使用GPIO时

11、应注意联合IOMUX驱动一起使用,IOMUX的使用,IOMUX_PowerOnInit(void)IO复用的上电初始化,IOMUX_SetI2CType(i2ctype)设置I2C复用的IO口线类型IOMUX_SetUart0Port(type)设置UART0复用的IO口线类型IOMUX_SetUart1Port(type)设置UART1复用的IO口线类型IOMUX_SetPwmPort(chn,type)设置PWM复用的IO口线类型IOMUX_SetI2SType(codectype)设置I2S复用的IO口线类型IOMUX_SetSDPort(type)设置SD复用的IO口线类型IO的第一功

12、能和第二功能同时只能使用一个。IO复用的上电初始化时,将预先设置各复用IO口线功能,中途要更改各IO的功能,应根据需要进行配置,中断的使用,Intr_PowerOnInit(void);-开机初始化控制器Intr_RegISR(irq,routine);-注册中断,将isr与irq关联Intr_Enable(irq);-使能特定中断Intr_Disable(irq);-禁止特定中断Intr_SetPrio(irq,priority);-设置中断优先级Intr_GetPrio(irq);-得到中断优先级int Intr_GetState(void);-获取状态Intr_ClearFlag(irq

13、);-清标志Intr_SetType(irq,type);-设置中断类型Intr_GetType(irq);-得到中断类型注意:中断驱动只针对芯片的中断控制器,不针对ARM的IRQ中断开机初始化时,关闭了所有中断,打开了ARM的IRQ中断服务程序不含参数,串口调试的使用,int serial_PowerOnInit(void)串口调试的上电初始化(2)void serial_printf(const char*fmt,.)*fm,.-格式化打印的可变字符串参数串口输出调试字符串和变量值,使用方式和C库函数printf相同(3)int serial_scanf(char*fmt,.)*fm,.-

14、格式化打印的可变字符串参数从PC端控制台读取输入的字符串,使用方式和C库函数scanf相同,Codec的使用,Codec_PowerOnInitial上电初始化CodecCodec_SetMode(Codecmode);设置Codec工作模式Codec_SetSampleRate设置Codec的采样率Codec_SetVolumet设置Codec的音量Codec_DACMute设置Codec 在DAC 工作时启动软静音Codec_DACUnMute(void)设置Codec在DAC 工作时关闭软静音 Codec_DeIitial(void)反初始化Codeccodec工作模式可设为下列几种:C

15、odec_DACout-音频数据流输出 Codec_FMin-FM LineIn输出 Codec_FMADC-FM录音 Codec_LineADC-线录(Line in recording)Codec_MICAdc-Mic录音 Codec_Standby-codec休眠省电模式,LCD及其控制器,ScreenPowerOnInit(pScreen)上电初始化LCDScreenRGBUpdate(*pScreen,*LcdArea)MCU类型LCD屏RGB方式数据更新ScreenYUVUpdate(*pScreenY,*pScreenUV)MCU类型LCD屏YUV方式数据更新ScreenYUVS

16、caleUpdateMCU类型LCD屏YUV方式放大缩小数据更新ScreenRGBAlphaUpdateMCU类型LCD屏RGB方式放大缩小数据更新,内容提要,仿真、调试、编译、烧录方,集成开发环境(IDE),RK27 IDE是指包含了源代码、算法库、编译环境、调试环境、仿真环境、烧写工具、资源生成工具等等的软件集成开发包。也即是RK27_SDK,SDK的目录结构,发布的软件版本包含如下目录:Application 应用层代码,如音频、视频播放器、电子书、收音机System 系统代码,包括OS,GUI,驱动,媒体库等等Build 编译相关Doc 平台技术文档Ide存放 编译工程目录,包括仿真和

17、板子等。其中,iderk27_board 为板子工程,使用 ADS 进行编译和调试,iderk27_dll 为仿真工程,使用 VC+6.0 进行编译和调试。其他目录为测试目录Lib 解码或其他算法库和相关的头文件。Output 编译输出的中间文件和目标文件。Resource 图片、文本、字库等资源相关,包括生成工具,输入配置文件,输入数据三部分。输入配置文件必须固定为 resourceresource.cfg 文件。输入格式可以参考该文件例子。具体说明参考后续文档Tools工具Customer预留给二次开发商使用的目录,编译器安装 VC+,进行仿真编译,需先安装VC+6.0以上编译器 默认安装

18、完VC+后,无需进行其他设置,双击打开RK27_SDKIdeRk27Dll目录下工程文件rk27dll.dsw文件即进入VC+环境,使用build目录进行编译如果需要在仿真环境下添加编译开关,进入Project菜单-settings选项,C/C+选项卡,在其中的Preprocessor definitions中添加如果需要添加默认编译路径,在其下的project Options中添加即可。,编译器安装 ADS,默认安装完ADS,则可打开RK27_SDKIdeRk27_board目录下ARM工程文件rk27_baord.mcp进行编译ARM编译均可使用默认配置,但当使用不同的JTAG调试器时,调

19、试软件AXD需选择不同的JTAG驱动程序。AXD的SDRAM初始化脚本使用build目录下的BoardInit_RK27_8x16.txt文件,BOOT烧写,新的板子或新的Nand Flash在烧写固件之前,应进行boot的烧写,boot升级方法请参考RK27_SDKTools目录下RK27烧写指南.doc文档当boot程序有升级时,也应及时进行boot的升级,否则有可能由于固件和boot不兼容而产生错误和冲突,图片资源,原始图片资源位于Resourceinputbmp目录下,可根据需要进行增删修改Resource根目录下的*.cfg文件用来配置图片和文本资源的输入、输出目录等原始图片应当是B

20、MP图片,文件名应当是英文或数字名,不可含中文或空格图片目录可以是中文名。编译完资源后,将会在Resourceinclude目录下自动生成Bmp0ID.h的文件,该文件是所有原始图片ID的集合,在代码中引用该ID即可访问对应的图片。图片资源生成后的目标文件是OutputRESOURCEBID目录下的BMP0.BIN(注:为防止编译产生资源ID引用错误,应在编译代码之前先编译资源),文本资源,原始文本资源位于Resourceinputstringid目录下excel文件unicodeSid.xls,使用office excel打开进行编辑。其中一列代表一国语言。编辑完原始文本后应另存为txt格式

21、,且选择unicode另存为文本unicode.txt。进行资源编译后,所有文本ID位于Resourceinclude目录下stringID.h文件,在代码中引用相应的ID即可访问其对应的文本资源。当语言发生改变时,使用相同的ID。文本资源生成后,其目标文件是位于OutputRESOURCESID目录下的STRINGID.BIN文件(其他小工具均位于Resourcebin目录下,请参看其说明),仿真调试界面,内容提要,系统和应用软件,操作系统,RKOS是Rockchip公司自主研发的一个实时抢占性多任务操作系统,主要支持信号量和消息(邮箱)两种通信方式。操作系统的基本调度方法是优先级调度法,任

22、务,RKOS的任务是一个具有独立堆栈的无限循环函数,每个任务都可以被内核或中断强占,一个任务可以不依赖其他任务单独运行。RKOS中任务的概念和通用操作系统一致.RKOS中具有五个基本任务:PriHighTask,PriMHighTask,PriNormalTask,PriLowTask和TimerTask,参与任务切换的还包括中断程序和IDLE任务,一个优先级只对应一个任务,这些任务均由内核启动时静态创建。所有任务一直驻留在内存之中,优先级不发生动态变化。一般地,用户不新创建任务,任务举例,任务的状态转换,当任务被创建后,处于就绪队列。OS TICK(5ms一次)到来之机,将就绪队列中优先级最

23、高的任务和当前运行的任务比较,若比当前任务优先级更高,则执行任务切换,否则继续运行当前任务。当前任务恒定只有一个,在当前任务运行的过程中,若需要等待一个条件(比如等待接受一个消息,等待申请一个信号量等),则会进入挂起状态,就绪队列中的最高任务会转入运行。挂起的任务所等待的条件到来时(如收到了消息,申请到了信号量等),此任务会转入就绪队列。优先级满足时会即刻转入运行。,任务的基本状态,线程,RKOS的线程是包含在某个任务之内的一个可独立处理消息的程序,一个任务可以包含有多个线程。线程没有独立的堆栈,RKOS线程具有如下特性 同一个任务内的所有线程共用该任务的堆栈。同一个任务内的所有线程按照注册次

24、序顺序执行(串行),没有调度关系。不同任务内的线程并行执行。一个任务内的某个线程若一直等待一个条件,则此任务内的其他线程都得不到执行,但其他任务内的线程可以得到执行。线程有少数几个是系统初始化时自建的,如GUI线程和刷屏线程,始终驻留在系统之中,用户的需要用到时,不需要再建立,只需要将代码嵌入在其中即可,如GUI系统。使用RockAppCreateThread动态注册一个线程(关联到一个应用程序)。注册时给出线程名和所属任务的优先级,若注册成功,返回一个线程句柄。注销时只需要提供线程句柄。,线程函数写法,线程函数本质上是一个处理消息的函数体,具有固定的类型和参数,如下图是一个刷屏的线程,处理三

25、个消息,线程的运行,线程的运行是在该线程的任务中进行,当任务收到消息时,会将消息分发给注册在本任务的线程,分发函数如下,即从线程列表中逐一取出线程回调函数,依次调用并将消息传递给线程,若该线程响应了此条消息,则不继续往下一线程派发,否则一直派发到最后一个线程。,线程被任务调用,操作系统消息,消息用于线程(或任务)之间的数据传递,可传送任意长度的数据。其接口是:RockOSSendMsg(*msgBox,Msgid,msg)发送消息RockOSReceiveMsg(*msgBox,Msgid,msg)接收消息消息传递的三个参数分别是邮箱、消息ID和消息体指针。消息的发送可以在任务、线程、中断、定

26、时器、内核等各处进行,但消息的接受一般只在任务中进行,因为消息在接受过程中可能会挂起任务,若在中断、线程中接受消息,则可能导致中断和线程长时间不能退出而崩溃。,操作系统消息派发规则,一个任务对应一个邮箱,同一任务的多个线程共用一个邮箱,消息ID Msgid是区分不同消息的ID号,消息指针指向消息体,消息体可以是任意数据类型,任意长度。消息的收发伴随有任务调度,分几种情况:当前任务A往一个更高优先级的任务B发送消息时,若目标任务B正处于挂起状态等待本消息,则切换至B任务处理此消息。同时Ready掉A任务 当前任务A往一个更低优先级的任务B发送消息时,不作任务切换,只递交消息指针,OS TICK调

27、度到B任务时,才能响应此消息。中断ISR往一个任务发送消息时,发送期间不作任务切换,中断退出时,作一次任务调度。同一任务的不同线程A和B之间传递消息时,实际上就是一个任务给自身发送消息,不做任务切换和调度。当前任务A使用RockOSReceiveMsg接收一个消息时,若该消息尚未被发送,邮箱中没有任何消息时,任务将被挂起,处于等待状态。,信号量,信号量(也称旗语)主要用于任务之间或多个任务的线程之间的某些同步。其接口如下:RockSemObtain(psem)等待、申请信号量RockSemRelease(psem)释放信号量当两个任务之间的线程共同访问一个资源时,需要用信号量同步,在进入共享之前,任务先使用RockSemObtain查询信号量psem是否被占用(在其他TASK被RockSemObtain),若被占用,则挂起本任务,直到信号量psem被别处释放,本任务得以继续,同时本任务占用信号量psem,直到使用RockSemRelease释放。同一任务的多个线程之间不存在信号量同步的问题,即同一任务的多个线程之间的信号量是没有任何冲突的。,信号量简图,GUI,注册表,文件系统,应用软件等见RK27软件开发指南,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号