EmbeddedSystem
文章平均质量分 75
TonyHo
这个作者很懒,什么都没留下…
展开
-
Android BLE自动测试系统与框架
实际开发中,因为需要对不同的BLE设备进行测试。包括语音遥控器,OTA,模组,ble mesh等设备的不同功能进行兼容与稳定性测试,而使用人工测试非常的缓慢且消耗人力。因此开发了一个测试系统用来做自动测试。同时这个自动测试,可以和CI结合起来,完成DevOps的构建。而且本套系统可以非常好的扩展到嵌入式中的其他测试,也包括其他的IoT RF测试。同时还可以与IC测试结合起来。演示效果youku视频...原创 2018-07-10 16:50:25 · 2375 阅读 · 2 评论 -
使用Remix OS作为X86 Android系统开发OS
源起在开发过程中,有需要X86上面的方案,因为Nexus Player还没有到,身边又没有其他Intel Android设备,想到PC就是X86,为了赶时间,因此决定使用笔记本(MacBook Pro)来安装一个Android X86系统,用来开发。根据记忆,下载了Remix OS并安装到了U盘,启动,发现确实可以正常使用蓝牙连接BLE Periphiral,因此决定就用这个系统。原创 2016-08-05 20:56:24 · 5136 阅读 · 0 评论 -
DBus入门实践(1): 基本概念
基本概念可以参考下面链接.或者是官方的教程. 1. linux,dbus示例 Knowing some basic things by example, 推荐:http://laokaddk.blog.51cto.com/368606/943133 http://laokaddk.blog.51cto.com/368606/943148/ 2. Docume原创 2016-09-09 11:24:51 · 6031 阅读 · 0 评论 -
CM12.1在Nexus Player上面的安装与问题解决
Nexus Player到手后,需要将系统刷成CM12.1的系统方便调试。本以为和其他Nexus设备一样非常的容易与简单。结果还是遇到了不少问题。启动后出现SystemUI Not response问题不管是自己编译的CM12.1,还是使用XDA中其他人编译的或者是CM官方下载的,都有这个问题,这个问题来源于两个方面,一个是App的问题,另一个是Gapps的问题。APP原创 2016-08-20 13:55:24 · 1317 阅读 · 0 评论 -
【EVB-335X-II试用体验】 基于Yocto的嵌入式的敏捷项目开发:以电子相册为例
EVB 335X-II有一个800*480的屏幕,如果放在家里,那么我们可以做一个电子相册,在家里放着的时候,可以自动播放图片幻灯片。这篇博客,我们将使用开源方案以及Yocto来构建和完成这个小项目。方案选择我们可以自己使用Qt/C++甚至Python,C来写一个直接操作Framebuffer,并针对不同size的图片进行适配和Zoom In/Out缩放处理,还需要对不同图片的加载进行原创 2016-08-14 23:27:06 · 3051 阅读 · 0 评论 -
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用:QT与触摸屏(3)
前面我们已经构建好了基本的Rootfs,并且可以启动起来的,但是我们也会发现这个roofs非常的小,相当于一个busybox搭建的一样,当然这个无法满足我们的需求,因此我们下面将开始扩展我们的rootfs,添加一些工具让我们可以方便的开发。显示问题使用前面的方法启动后,我们会发现在uboot阶段是有图片的,但是在linux之后却没有发现有boot logo,然后启动之后我们也没有发原创 2016-07-31 19:01:42 · 5376 阅读 · 0 评论 -
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用(2)
在前面的文章中,我们已经使用Yocto构建出一个Rootfs,但是因为WatchDog的缘故,启动没有多久就重启了。下面我们来解决这个问题。WatchDog的Disable我们既可以在Rootfs启动后定期喂狗,也可以直接在kernel中disable Watchdog,在开发初期我们选择在内核中直接去掉比较快。内核配置使用make menuconfig来配置,结果出现了错误:原创 2016-07-25 14:14:06 · 2295 阅读 · 0 评论 -
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用
前面的文章中已经建立起kernel与bootloader的repo,这篇开始,我们将先建立Yocto编译环境,并编译出基本的rootfs。Yocto基本meta的获取我们需要好几个meta与poky首先需要保证至少有65GB的Free磁盘空间或者更多,创建一个目录:mkdir Yocto然后clone各个meta与poky第一个是meta-bbb:git clone原创 2016-07-25 14:11:30 · 7376 阅读 · 0 评论 -
树莓派3的调试串口问题的不完美解决:让蓝牙与调试共存
问题因为解决方案USB UART consoleNetwork consoleSSHagatty的配置问题原创 2016-09-08 16:12:15 · 9943 阅读 · 0 评论 -
Android ADB始终为unautorized的解决
现象启动后连接ADB,始终无法连接,adb devices显示为没有授权,但是Android端又始终没有出现Debug权限确认的Dialog,让人疑惑不解,尝试了将Android端的Debug 认证记录取消,依然没有解决。$ adb devicesList of devices attached16F7C5DE unauthorized如果使用adb shell查看,那原创 2016-08-17 16:25:54 · 44056 阅读 · 7 评论 -
S5P4418 使用SD卡启动Android系统
S5P4418的启动方式我的板子是g4418box,默认的从eMMC启动,如果插入了SD卡那么就从SD启动,具体的板子需要看HW设计。SD卡的layout在layout之前我们需要知道各个分区的大小,而编译出来的img是sparse的ext4,所以需要先convert到标准的ext4,然后再mount,mount之后可以看到对应的size:loop0 7:0 0原创 2016-08-17 14:42:57 · 9044 阅读 · 1 评论 -
4G模块SIMCOM7100 LTE在ARM Linux下使用PPPD上网
尝试了网上其他人的方法,没有成功,最终自己看文档搞定了,希望写下来方便其他人,节省时间。材料4G硬件: SIM7100-PCIE-EVB_V1.01HostPC: Linux hexiongjun-pc 3.13.0-86-generic #131~precise1-Ubuntu SMP Fri May 13 19:43:06 UTC 2016 x86_64 x86_64 x86_原创 2016-05-22 12:14:10 · 12123 阅读 · 9 评论 -
为小米4与小米3 Mi3 Mi4编译Cyanogenmod 12.1与13.0 (CM12与CM13) 的步骤以及错误解决
小米4是Cyanogenmod官方支持的Device,所以编译无需我们做Device specific适配,我们只需要提取代码(Android 与Kernel),获取proprietary binary files即可编译。 小米4以及小米3的设备名字都是cancro,CM对于这两款设备的WIki位于:https://wiki.cyanogenmod.org/w/Build_for_can原创 2016-06-06 09:18:36 · 8685 阅读 · 16 评论 -
S5P4418与S5P6618的Android boot.img的解压与压缩, Sparse ext4文件系统
文件类型4418的boot.img是由kenrel + uramdisk组成的ext4 并且是sparse形式的image, 这里面的sparse是紧凑的意思,即将ext4文件系统中的内容为zero的地方“压缩”起来, 从而减少size。制作这种类型的image,使用make_ext4fs, 并使用-s选项制作而成,例如在4418中(其他Android或者文件系统也是类似),命令如下:原创 2016-07-12 11:47:57 · 2511 阅读 · 0 评论 -
Android JNI DETECTED ERROR IN APPLICATION的解决
在APK中使用了jni 的so shared library,运行的运行的时候出现如下的错误: art F art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception 'java.l原创 2016-07-12 12:58:28 · 34409 阅读 · 1 评论 -
【EVB-335X-II试用体验】 上手试用与资源使用
开箱收到快递后,拆开的第一感觉是,果然是工控版,包装不错可以看到各种器件齐全,包括网线,串口线以及EXT IO的接插件,以及电源,开箱即用,如果你已经有了USB转串口线的话。启动启动之前,需要连接串口,电源线,上电后的样子如下:启动之后,自动启动了一个QT程序,进行各个设备的自检,方便大家确定板子的硬件情况。软件资源在下载下来的光盘中,可以看到有从B原创 2016-07-25 14:09:06 · 2156 阅读 · 1 评论 -
【EVB-335X-II试用体验】 u-boot与kernel的编译以及本地repo的建立
解压了网盘下载后的压缩包后,找到了doc目录,但是在这个目录中,没有找到uboot与kernel的编译说明。后来再找才发现是在nand的doc子目录中。下面就说明一下,各个make过程中都做了点什么,方便大家对整个编译过程的理解。内核与u-boot的编译生成配置文件配置如下:可以看到有里面有说他DRAM的宏定义这些宏的定义位于boards.cfg中:然后ma原创 2016-07-25 14:12:00 · 1529 阅读 · 0 评论 -
Android中使用"hacker"方式解决ServiceManager的权限限制问题(1)
缘由有一个系统,需要我们的解决方案,但是却没有提供BSP的源码。我们的方案有一个So文件,并在其中有注册service,但是启动后发现service并没有注册成功,查询log发现是:E/ServiceManager﹕ add_service('XXXX',0x48) uid=YYY - PERMISSION DENIED看起来是我们不具备权限,然后确定了一下SElinux的状态,发现是原创 2016-08-02 10:59:25 · 2675 阅读 · 0 评论 -
Android BlueDroid分析: OSI中的HashMap的实现
说明hash map在C语言标准库中并没有封装, 不像其他语言那么方便, 例如python中有Dictionary, 而hashmap又非常有用, 因此Bluedroid自己封装了一套.封装实现的文件列表如下:osi/src/hash_functions.c osi/src/hash_map.cosi/include/hash_functions.hosi/include/hash原创 2017-02-03 18:49:19 · 630 阅读 · 0 评论 -
Android BlueDroid分析: OSI中的List与alloctor的实现分析
alloctoralloctor是一对函数,因此先要定义来个函数Pointer 类型。typedef void *(*alloc_fn)(size_t size);typedef void (*free_fn)(void *ptr);可以看到,这个和libc中的malloc与free arguments与return type都是一样的,因此可以认为是OSI为了抽象分隔不同的“原创 2017-02-03 11:34:48 · 986 阅读 · 0 评论 -
USB与BT HID reports描述符实践与抓包分析
文章内容提示这篇文章主要说明如何获取与查看USB和BLE HoGP HID设备报告描述符,如何根据获取的描述符读懂report。然后说明了可以使用hidrd-convert工具,来如何根据hex报告描述符转化得到C语言格式的描述符,这对于我们编码是有意义的。 其中,还截取了USB 逻辑分析仪,Wireshark等工具来查看input report。如何看懂HID report de原创 2017-10-13 11:05:07 · 16525 阅读 · 1 评论 -
USB Basic and its Packets
Update 2017 10-15For chinese, see this page as a reference.To get started with the USB quickly, I summary the following steps from my experience.Get the materialsUSB SpecificationThe USB 2原创 2017-10-17 11:54:17 · 602 阅读 · 0 评论 -
imx6ul蓝牙语音识别项目之1:硬件准备
硬件在一些时间的延误后,终于收到了顺丰过来的板子,本以为需要到年后了。听说板子的延误是因为发现了一个小问题。收到板子后打开看到的是盒子包装,看起来“高大上”的感觉:打开,里面有一张V3 软件的BSP, 网线, OTG USB 线,以及电源线:核心的板子看起来不错,至少做工和基本可见的布线很漂亮:但是板子的尺寸比我想象的小。软件在将关盘拷贝到电脑后,发现结构和以前IoT和Industry里面是类似的...原创 2018-07-02 16:25:20 · 1841 阅读 · 0 评论 -
imx6ul蓝牙语音识别项目之2: 添加蓝牙Controller支持
蓝牙架构在Linux中蓝牙的stack分层如下:从总体上看分为两层, 一个在内核态,一个在用户态,内核态。在内核态中的部分暴露了一个特殊的Socket给用户态,然后用户态使用命令+参数的格式传递给内核态。而如果硬件有反馈信息,一般是事件,那么会有callback消息上来。硬件说明对于蓝牙,一般都是模组,例如有些是BT Wifi模组,即BT-Wifi为一体的模组。这种模组一般是通过UART,SDIO...原创 2018-07-02 16:28:38 · 1120 阅读 · 0 评论 -
imx6ul蓝牙语音识别项目之3:用户态蓝牙配置
stack的划分在前面的文章中,我们已经配置好了内核态对蓝牙的支持, 包括驱动以及内核态的stack。Linux蓝牙的stack为BlueZ, 参考前面的文章的图片,可以知道,内核态和用户态使用的是MGMT接口来通讯。底层主要负责和Controller数据的传输,而数据的传输接口一般为USB,SDIO以及串口。具体而言,功能如下:其中个人认为比较复杂的是SMP,内核态中对:控制数据这两类信息通过s...原创 2018-07-02 16:31:31 · 1025 阅读 · 0 评论 -
imx6ul蓝牙语音识别项目之4:构建ARM Linux语音识别环境
语音识别的选择前面我们准备好了BlueZ stack, 接下来就需要准备语音识别库了。对于语音识别,国内主要的提供商有:科大讯飞图灵机器人思必驰信息科技有限公司北京捷通华声科技股份有限公司百度语音北京云知声信息技术有限公司哦啦语音但是,我们是在ARM Cortex-A7单核上面跑,平台为ARM Linux,而且我们不准备跑python,而是使用C/C++, python脚本写代码会很快,但是效率较...原创 2018-07-02 16:34:40 · 3120 阅读 · 3 评论 -
imx6ul蓝牙语音识别项目之5:BLE基础与imx6ul上的BLE外设的使用
前面我们准备好了下面这些软件:BlueZ 5.49及其运行需要的组建百度语音识别及其运行需要的依赖库Controller的驱动并编译好了测试代码。 那么接下来,我们就需要和语音遥控器连接了,但是在此之前需要对BLE有所了解。BLE VS Wifi VS ZigBeeBLE属于Personal network, 工作距离近, 一般在10m内。BLE协议架构Core Specification 与 a...原创 2018-07-02 16:37:59 · 1347 阅读 · 0 评论 -
imx6ul蓝牙语音识别项目之6:语音格式说明以及整合与实际效果演示
前面我们准备好了所有的软件硬件,现在是时候开始正在的业务逻辑功能的实现了。语音数据的格式语音遥控器走的是BLE, 对于Voice Over BLE有多种方案,不同的厂家和方案商都不同的实现。下面我们使用TI的来说明,其他的也是类似的。这里面主要是说明了各种格式,以及传递协议。 我们需要接受和decoder语音,那么就需要搞明白这些东西。具体而言,语音的Profile如下:交互过程如下:注意第一包语...原创 2018-07-02 16:48:34 · 1541 阅读 · 1 评论 -
amlogic S905X udpate imge的压缩和解压
我这边使用的板子是khadas VIMamlogic的升级和烧写有多种方式, 常见的是USB烧写和SD卡烧写. USB烧写的流程其实是解压update.img中的文件,然后push到RAM中运行. 然后再push文件到ram中烧写. 这个和Freescale的MFGTools类似.update.img的生成生成update.img的命令如下,可以看到不同文件在update.im原创 2017-06-20 11:41:04 · 7975 阅读 · 1 评论 -
OpenWRT添加无线USB网卡
要完成网线网卡的驱动需要在内核中添加驱动,同时还需要将固件放入rootfs中正确的位置,如果需要固件的话。内核驱动添加Firmware添加启动确认启动后,我们需要等待rootfs完成后再插入, 这样子可以比较容易看到log, 对于TPLink的其中一款,对应的log如下:[ 1015.718981] usb 1-1.2.4: new high-speed USB原创 2017-02-04 22:20:53 · 47631 阅读 · 1 评论 -
OpenWRT中使用无线网卡做中继器与AP热点
中继器与AP的实现这里我们假定中继器完成下面这样的一个功能:Wired Network ---> Wireless Network ---> 上级无线路由器即从外部插入一个网线,通过imx6UL上面的无线网卡将数据转发到上级的路由器上面, 当然也可以完成下面这样的传送:Wireless Network(AP mode) --> Wireless Network(原创 2017-02-05 11:31:22 · 13915 阅读 · 0 评论 -
如何减少Android源码size并打包与切割上传共享
源码很大的原因repo sync下Android的代码, 然后编译后,一般size都在60GB左右, 主要是因为代码中包含了out编译结果产物目录, 以及版本相关的.git与.repo目录, 如果不打包这两个目录, 那么常规的Android 6.0代码压缩后大概为6GB左右. 打包可以使用类似下面的命令来排除非必须代码和目录以及压缩Android source co原创 2017-01-19 15:44:20 · 818 阅读 · 0 评论 -
【IMX6UL开发板试用体验】上手试用与资源使用
这个是我拿到的第二块Emball的板子了,前面是AM335X的板子。这块板子也是工业板,做工确实扎实。硬件和以前的AM335X板子一样,做工和用料比较扎实,该有的都有,连插针都是镀金的。让人非常放心的感觉。软件资源原创 2017-01-23 23:28:22 · 5397 阅读 · 1 评论 -
【IMX6UL开发板试用体验】OpenWRT在iMX6UL上面的移植与编译
选择OpenWRT在最近的时期分裂出了LEDE出来,因此这就涉及到了这两个的选择。前段时间,编译过LEDE用于树莓派3,于是想着直接使用以前的LEDE,这样子省去了下载,毕竟在国内下载很多source code可能需要很长的时间,如果没有proxy的话。于是想着省些事情就用起来了以前的LEDE来编译,但是编译过程中出现了很多错误, 因此最终我决定切回到OpenWRT,并且使用master上原创 2017-01-25 22:18:15 · 10841 阅读 · 1 评论 -
【IMX6UL开发板试用体验】OpenWRT有线网络的配置
在前面编译完成后,就可以烧写测试启动了。 但是启动后发现了一些问题。本次我们说明一下如何使用OpenWrt中的wired LAN。网卡驱动问题本身板子有两个网口,其中一个没有变压器转换器,另外一个在Uboot中使用是没有问题的,可以正常的tftp下载kernel与dtb,但是在Linux,OpenWRT启动后,如果配置网络IP地址就会出现不停的up与down的情况udhcpc原创 2017-01-28 21:41:00 · 6010 阅读 · 2 评论 -
Nexus 7 Cyanogenmod OS Compile and errors
Nexus 7 Hardware informationThe Nexus 7 comes with several types, genaration I and II, sales in 2012 and 2013. The Gen1 and Gen2 have different Processor, one is the NVIDIA Tegra, another with QC原创 2016-05-08 15:33:03 · 2059 阅读 · 0 评论 -
打造嵌入式ARM Linux防火墙:1. iptables基础
iptables 包含多个tables,tables中可以包含多个chains,chains可以是自定义也可以是builtin的,其可以包含多个rules。 而rules对应的是packetsiptables的4个内置tables1. Filter Tableiptables的默认table,因此如果不指定,那么默认就使用的是这个。Filter Table的3个内置Chai原创 2016-05-17 19:44:18 · 5044 阅读 · 0 评论 -
Freescale IMX6 Android (1): 使用HDMI作为Android显示输出的配置
环境准备与编译个人使用的是Ubuntu 12.04 X64,针对环境的配置,百度即可。板子使用的是TQIMX6Q。lunch目标但是,编译的时候使用的是TQ提供的脚本build_sh,根据这个脚本,可以看到lunch的目标是sabresd_6dq:$ echo $TARGET_PRODUCT sabresd_6dq即,TQIMX6的Android lunch目标其实使用的是sa原创 2015-12-05 17:57:33 · 9286 阅读 · 0 评论 -
Freescale IMX6 Android (6): 向ServerManager中添加Service
简述前面的博客中,我们直接添加C lib到APK中,然后使用LoadLibrary加载这个库,同时添加一个class来作为中间层,直接使用这个C库中的native函数来控制硬件,这种做法将硬件与APK牢牢绑定,如果有多个APP来访问同一个硬件就会出现问题,代码也会有很多的重复,在Android中,我们使用Android的SystemServer向ServiceManager来将硬件的功能添原创 2015-12-17 17:08:34 · 1882 阅读 · 0 评论 -
Freescale IMX6 Android (4): 基于TQIMX6 给Toolbox添加LED控制程序
本篇博文是为了后面的Android HAL层使用LED而做的准备,板子基于TQIMX6Q,Android 4.3,Android已经编译完成了,如果还没有可以参考前面我的博文:Freescale IMX6 Android: 使用HDMI作为Android显示输出的配置,以及TQ提供的开发者手册。LED的硬件连接LED4~6是给用户使用的,如下:可以看到是GPIO3_21原创 2015-12-10 20:47:31 · 2768 阅读 · 0 评论