您的位置:首页 > 其它

QCA4010上手使用

2015-11-26 21:27 781 查看
一、概述

从中电港收到一块QCA4010的DEMO板,板子引出很多接口,外设也很丰富,提供8路ADC,8路PWM,3路串口,2路I2C ,2路I2S,2路SPI,RAM 1MB ,ROM 1.25M,相对与QCA400X系列提升了很多,相对与QCA400X系列的透传更适合于hossless使用。

先睹为快,板子外观:





唯一遗憾的是板子上没有标注管脚排针的丝印,都不知道这些排针所对应的管脚。

二、开发环境搭建

这里要说明一下,QC4010的cad_kf_RD2012_4 的编译工具链在64位系统上用不了,只能在32位的系统上使用,在64位系统上会提示找不到xt-xcc命令找不到。

解压开发工具链cad_kf_RD2012_4.tar.gz到根目录下。把license.dat放在/cad/tensilica/目录下。

编译及下载:

解压SDK包,得到如下文件:



修改sdkenv.sh 添加

XTENSA_CORE=KF1_prod_rel_2012_4 XTENSA_TOOLS_ROOT=/cad/tensilica/xtensa/XtDevTools/install/tools/RD-2012.4-linux/XtensaTools

XTENSA_ROOT=/cad/tensilica/chips/kingfisher/RD-2012.4-linux/XTENSACOREXTENSASYSTEM={XTENSA_CORE}
XTENSA_SYSTEM={XTENSA_ROOT}/config

LM_LICENSE_FILE=~/xtensa/license.dat

PATH=PATH:{PATH}:{XTENSA_TOOLS_ROOT}/bin

export LM_LICENSE_FILE XTENSA_TOOLS_ROOT XTENSA_ROOT XTENSA_SYSTEM XTENSA_CORE PATH

export XTENSA_PREFER_LICENSE=XT-GENERIC

保存。

设置网卡MAC

sudo ifconfig eth0 down

sudo ifconfig eth0 hw ether 00:0c:29:01:02:03

sudo ifconfig eth0 up

到sdk的目录下,执行

source sdkenv.sh

make -C demo/sdk_shell

这两条指令如果在终端窗口没提示什么错误就表明编译正常。

再执行

cp ./tool/tunable/tunable_input_sp24X_hostless_4bitflash.txt ./tool/tunable/tunable_input.txt

./tool/qonstruct.sh –qons ./tool/tunable/

这两句指令生产可烧录BIN文件

在执行./tool/qonstruct.sh –qons ./tool/tunable/

时可能会提升如下错误:



是因为没有安装libxml2这个库,执行如下命令就可以安装libxml2

sudo apt-get install libxml2

sudo apt-get install libxml2-dev



其中ota_image_AR401X_REV6_IOT_hostless_unidev_dualband.bin为空中升级文件。

raw_flashimage_AR401X_REV6_IOT_hostless_unidev_dualband.bin为ART烧写文件。

把raw_flashimage_AR401X_REV6_IOT_hostless_unidev_dualband.bin放到ART的bin文件夹下,运行artgui.exe, 将JP4.4与JP5.1短接,运行ART中driver文件夹中的bat文件安装相应的驱动(不同机器不一样)我的是win7 64位的就安装如下文件夹中的:



正常安装驱动后如图:



AR6006



按load card出现Unload card.

Tools -> Send cmd,使用“xp file=xxxxxx”进行烧录.烧录完成如上图所示:4047 INFO Programming done successfully.

接debug UART:J1.6(TX)、J1.8(RX),在Xshell中:

出现乱码,可能是我的USB转串口在高波特率时会出现问题。

三、程序代码分析

Skd shell的代码结构如下:

先从app_start.c开始,qcom_sys_start(user_main, &sysStartPara);

app_start.c中是设置一些环境参数sysStartPara,后进入到user_main函数,usr_main是在sdk_shel.cl中,

User_main中新建了一个线程,shell_host_entry,shell_host_entry函数进入task_execute_cli_cmd();

/* Never returns */

进入到命令解释阶段。

明白了软件大概的启动流程,就可以非常容易的实现自己要实现的功能了。

把task_execute_cli_cmd();替换成自己想要实现的代码,就可以实现自己想要的结果了。

本次分享先写到这里。后续还需要慢慢琢磨如何去实现一些比较实际的应用,如alljoyn等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: