Led中间件开发.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
硬件抽象层 硬件抽象层的switch和get_state函数直接调用设备驱动文件给出的ioctl函数接口即可与内核通信 #define FILE_PATH /dev/leds_ctrl“ // 设备节点 static int leds_ctrl_fd = -1; ? static int leds_ctrl_open(void) { leds_ctrl_fd = open(FILE_PATH, O_RDWR); // 打开设备文件,获得文件描述符 } ? static int leds_ctrl_close(void) {} // 释放进程? static int leds_ctrl_switch_on_off(int num,int state) // 根据设备文件的ioctl函数定义switch函数 { …… /* ioctl控制参数LEDS_CTRL_IOC_*在leds_hal.h定义,应与设备文件定义控制参数的一致*/ return ioctl(leds_ctrl_fd, state ? LEDS_CTRL_IOC_LED6ON : LEDS_CTRL_IOC_LED6OFF, NULL); …… } static int leds_ctrl_get_leds_state(int num){} // 根据设备文件的ioctl函数定义get_state函数 编译运行例程 例程Leds-ctrl复制到/usr/local/src/EMobile/EMB9G45/Android-2.1_r2/hardware下编译: $ cd /usr/local/src/EMobile/EMB9G45/Android-2.1_r2 $ souce build/envsetup.sh $ choosecombo ? 1?1?sam9g45?eng $ mmm hardware/Leds-ctrl 编译结束后,在源码包Android-2.1_r2/out/target/product/sam9g45/system/app目录下生成LedsCtrl.apk文件 在源码包Android-2.1_r2/out/target/product/sam9g45/system/lib目录下生成libleds_hal.so和libledsctrl_jni.so文件。 使用ADB工具安装,将上述的LedsCtrl.apk和libleds_hal.so文件拷贝到挂载的C盘目录下。进入windows,启动Android系统,连接usb到PC端,PC桌面点击开始-运行-cmd,进入dos界面,操作如下: cd c:\ adb install LedsCtrl.apk adb push libleds_hal.so /system/lib 运行结果(1) 进入应用程序,如右界面,点击按键 固化或使用tftp服务启动挂载有/dev/leds_ctrl节点的Linux内核映像 进入Android系统后还必须修改leds_ctrl节点的权限才能读写该文件。 开发平台上的D7、D8随按键亮灭 将平台通过usb到PC端,PC桌面点击开始-运行-cmd,操作如下: adb shell # chmod 777 /dev/leds_crtl 运行结果(2) 另外,即使没有leds_ctrl节点也没有关系,我们可以通过在函数里添加一些debug信息,使用logcat命令打印调试信息,确认中间件的发开是否正确。将平台通过usb到PC端,PC桌面点击开始-运行-cmd,操作如下: adb shell # logcat 进入应用程序,点击应用界面的按钮,我们可以看到如图红框中的debug信息,例如启动应用程序过程,从java应用函数Open The mLedDevice开始依次调用,直到HAL的function调用Linux drver function,因为没有对应的driver,所以最后显示mLedDevice open failed。另外两个红框里的信息分别对应按下Turn On/Off Led7和Get Led7 State后函数的调用过程。 五 NDK开发LED中间件 NDK出现背景 1.在Android SDK 文档里,找不到任何JNI方面的帮助。 2.即使第三方应用开发者使用JNI完成了自己的C动态链接库(so)开发,但是 so 如何和应用程序一起打包成 apk 并发布?这里面也存在技术障碍。 NDK 集成了交叉编译器,并提供了相应的mk 文件隔离CPU、平台、ABI 等差异,开发人员只需要简单修改mk 文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK 可以自动地将so 和Java

文档评论(0)

飞扬的岁月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档