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等。
从中电港收到一块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等。
相关文章推荐
- NSNumber / 笑笑语法
- Linux_ISCSI服务器
- ubuntu搭建mib2c环境
- leetcode@ [139/140] Word Break & Word Break II
- 网络相关命令
- 理解css 中的position五个属性
- 用Java语言打印一个倒立的等腰三角形———2015.11.26
- 栈的基本操作
- 第一个项目:五子棋
- 史上最好看的电影你看过吗
- php正则表达式速查手册
- Delphi使用XmlHttp获取时间
- Beta版本冲刺计划
- android应用添加欢迎界面
- 数据结构——单向传统链表(java实现)
- 驱动-Hello,World
- 如何在VMware Workstation搭建vCAC 6.2实验环境 - 第二部分
- ubuntu安装lamp&&mysql中修改配置文件显示中文&&强大的vim配置&&c++连接Mysql
- 关于/dev/shm的文章
- LeetCode---Count and Say