初级培训讲义.ppt_第1页
初级培训讲义.ppt_第2页
初级培训讲义.ppt_第3页
初级培训讲义.ppt_第4页
初级培训讲义.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、RK27平台基础,开发必须的相关资料: SDK软件开发包 VC+ 编译器 ARM ADS 编译调试器 电路图,datasheet RK2700 Demo板 JTAG仿真器及驱动,内容提要,Q I2C_Init和I2C_Deinit要成对使用; 同时只可对同一设备进行读写,GPIO使用,GPIO_PowerOnInit( void );开机初始化GPIO GPIO_Config(GPIOPinNum, GpioConfig);配置一个GPIO GPIO_SetPinLevel(GPIOPinNum,level);设GPIO电平 GPIO_GetPinLevel(GPIOPinNum);读GPIO

2、电平 GPIO_SetPinDirection(GPIOPinNum,direction);设GPIO方向 GPIO_EnableIntr(GPIOPinNum);打开GPIO中断 GPIO_DisableIntr(GPIOPinNum);关闭GPIO中断 注意: GPIO分PA、PB、PC、PD四组32个,可分组配置,也可单独配置某一个口。 大多数GPIO都有复用,因此在使用GPIO时应注意联合IOMUX驱动一起使用,IOMUX的使用,IOMUX_PowerOnInit(void)IO复用的上电初始化, IOMUX_SetI2CType(i2ctype)设置I2C复用的IO口线类型 IOMU

3、X_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的第一功能和第二功能同时只能使用一个。 IO复用的上电初始化时,将预先设置各复用IO口线功能 ,中途要更改各IO的功能,应根据需要进行配置,中断的使用,Intr_PowerOnInit(void); -

4、 开机初始化控制器 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);- 清标志 Intr_SetType(irq, type); - 设置中断类型 Intr_GetType(irq); - 得到中断类型 注意:

5、 中断驱动只针对芯片的中断控制器,不针对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, . - 格式化打印的可变字符串参数 从PC端控制台读取输入的字符串,使用方式和C库函数s

6、canf相同,Codec的使用,Codec_PowerOnInitial上电初始化Codec Codec_SetMode(Codecmode);设置Codec工作模式 Codec_SetSampleRate设置Codec的采样率 Codec_SetVolumet设置Codec的音量 Codec_DACMute设置Codec 在DAC 工作时启动软静音 Codec_DACUnMute(void)设置Codec在DAC 工作时关闭软静音 Codec_DeIitial(void)反初始化Codec codec工作模式可设为下列几种: Codec_DACout - 音频数据流输出 Codec_FMin

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

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

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

10、默认安装完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编译均可使用默认配置,但当使用不同的JT

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

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

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

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

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

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

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

18、消息 消息传递的三个参数分别是邮箱、消息ID和消息体指针。 消息的发送可以在任务、线程、中断、定时器、内核等各处进行,但消息的接受一般只在任务中进行,因为消息在接受过程中可能会挂起任务,若在中断、线程中接受消息,则可能导致中断和线程长时间不能退出而崩溃。,操作系统消息派发规则,一个任务对应一个邮箱,同一任务的多个线程共用一个邮箱,消息ID Msgid是区分不同消息的ID号,消息指针指向消息体,消息体可以是任意数据类型,任意长度。 消息的收发伴随有任务调度,分几种情况: 当前任务A往一个更高优先级的任务B发送消息时,若目标任务B正处于挂起状态等待本消息,则切换至B任务处理此消息。同时Ready掉A任务 当前任务A往一个更低优先级的任务B发送消息时,不作任务切换,只递交消息指针,OS TICK调度到B任务时,才能响应此消息。 中断ISR往一个任务发送消息时,发送期间不作任务切换,中断退出时,作一次任务调度。 同一任务的不同线程A和B之间传递消息时,实际上就是一个任务给自身发送消息,不做任务切换和调度。 当前任务A使用RockOSReceiveMsg接收一个消息时,若该消息尚未被发送,邮箱中没有任何消息时,任务将被挂起,处于等待状态。,信号量,信号量(也称旗语)主要用于任务之间或多个任务的线程之间的某些同步。其接口如下: RockSemObtain(psem)

温馨提示

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

评论

0/150

提交评论