<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[canyudeguang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/canyudeguang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; canyudeguang]]></copyright><item><title><![CDATA[secure boot（三）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/83663701</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/83663701</guid><author>canyudeguang</author><pubDate>Sat, 03 Nov 2018 02:28:03 +0800</pubDate><description><![CDATA[0.前言

    本文主要说明的是在开启secure boot功能时可能遇到的难题，以及如何使用USB的方法来刷签名镜像。

 

1.开启secure boot功能可能会遇到的问题

     我们刷完签名镜像之后，就可以重启机器，如果一切工作顺利，那么机器会正常运行，和没有启用secure boot时的情况一致。但是如果有什么步骤出错了，你会发现机器啥都没有输出，终端没有一点反应，这是因为软...]]></description><category></category></item><item><title><![CDATA[secure boot（二）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/83663677</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/83663677</guid><author>canyudeguang</author><pubDate>Sat, 03 Nov 2018 01:35:15 +0800</pubDate><description><![CDATA[0.前言

    本文的目的是为了根据一个实例来讲解在QCA4020开发板上如何启用secure boot 功能。

 

1.通过OTP 编程工具使能secure boot

    为了设置OTP保险丝，我们需要使用QCA4020 SDK中包含的OTP编程工具。

（1）编辑位于target\quartz\mfg\OTP\tools\下的配置文件otp_config.xml，如下所示：


...]]></description><category></category></item><item><title><![CDATA[secure boot（一）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/83663668</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/83663668</guid><author>canyudeguang</author><pubDate>Sat, 03 Nov 2018 01:30:34 +0800</pubDate><description><![CDATA[0.前言

    本系列讲解的是如何在高通的QCA4020开发板上实现secure boot功能，以及一些相关的概念。

 

1.什么是secure boot

    Secure boot指的是建立用于运行已验证应用程序的可信平台的启动序列。它从一个不可变的序列开始，使用密码验证验证代码的源，从而只执行授权的软件。启动序列将设备置于已知的安全状态，并检测软件的二进制操作和反射攻击。

  ...]]></description><category></category></item><item><title><![CDATA[Zigbee about QCLI_demo（3）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/83013813</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/83013813</guid><author>canyudeguang</author><pubDate>Thu, 11 Oct 2018 16:01:07 +0800</pubDate><description><![CDATA[0.前言

    在zcl_demo.c中定义了很多的全局变量，与cluster和endpoint有关，本文来查看它们之间的关联关系。

 

1.demo支持的所有cluster

    所有的cluster都使用下面的结构，由ID、名称、初始化函数、服务端函数和客户端函数组成。


/* Structure to describe a cluster that can be used by...]]></description><category></category></item><item><title><![CDATA[Zigbee about QCLI_demo（2）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/83013705</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/83013705</guid><author>canyudeguang</author><pubDate>Thu, 11 Oct 2018 15:55:54 +0800</pubDate><description><![CDATA[0.前言

    本文旨在说明创建endpoint。

    创建哪一个endpoint，以及什么类型的endpoint。

 

1.函数原型


static QCLI_Command_Status_t cmd_ZB_CL_CreateEndpoint(uint32_t Parameter_Count, QCLI_Parameter_t *Parameter_List)

Paramete...]]></description><category></category></item><item><title><![CDATA[Zigbee about QCLI_demo（1）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/83013070</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/83013070</guid><author>canyudeguang</author><pubDate>Thu, 11 Oct 2018 15:47:44 +0800</pubDate><description><![CDATA[0.前言

    如前面的helloworld_demo中所说，平台架构分为两大部分：始化部分app_init和主体部分app_start。zigbee的准备工作是放在app_init中的，主体部分是放在app_start中的。本文说明的是app_init中对zigbee的初始化。

 

1.全局变量

（1）ZigBee_Demo_Context


/* Structure represe...]]></description><category></category></item><item><title><![CDATA[Power Optimization SDK介绍之电源管理的两种模型：reactive和proactive]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/82628954</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/82628954</guid><author>canyudeguang</author><pubDate>Tue, 11 Sep 2018 17:11:10 +0800</pubDate><description><![CDATA[    电源管理是指如何将电源有效的分配到设备的不同的组件。电源管理对于依赖电池电源的移动设备来说是非常重要的，例如笔记本、手机等等。一个好的电源管理系统能够使电池的寿命和每次使用的时间大大增加。

    本文旨在说明与电源管理相关的两种模型：无功功率电源管理和有功功率电源管理。

 

1.无功功率电源管理

（1）无功功率产生的原因

    在AC电路中，由于电感和电容部分中的临时能量存储...]]></description><category></category></item><item><title><![CDATA[QCA4020之BLE 服务（5）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81743699</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81743699</guid><author>canyudeguang</author><pubDate>Thu, 16 Aug 2018 16:09:17 +0800</pubDate><description><![CDATA[0.前言

    CCCD，Client Characteristic Configuration Descriptor，客户端特征配置描述符，主要用于开启或者关闭通知信息。

    首先，CCCD是一个描述符；

    其次，它对应的UUID是2902.

 

1.在电池警报服务的填充函数中，CCCD的获取过程是：


if(QAPI_BLE_GATT_COMPARE_CLIENT_CH...]]></description><category></category></item><item><title><![CDATA[QCA4020之BLE 服务（4）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81743520</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81743520</guid><author>canyudeguang</author><pubDate>Thu, 16 Aug 2018 16:05:18 +0800</pubDate><description><![CDATA[0.前言

    本文将QCA4020板作为服务端，使用Ubuntu上调试蓝牙的工具BlueZ与之进行交互，查看板提供的服务。以BAS服务为例。

 

1.在板上注册服务


3                            //进入BLE
4                            //初始化
53                           //进入BAS
4...]]></description><category></category></item><item><title><![CDATA[QCA4020之BLE 服务（3）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81743164</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81743164</guid><author>canyudeguang</author><pubDate>Thu, 16 Aug 2018 15:57:08 +0800</pubDate><description><![CDATA[0.前言

    在上一篇文章中提到，每次发现一个服务，就会调用回调函数，回调函数会填充相关的服务结构体，本文旨在说明AIOS服务的填充。

 

1.AIOSPopulateHandles

    在回调函数中调用了AIOSPopulateHandles这个函数进行AIOS服务的填充，首先我们来看它的参数：


static void AIOSPopulateHandles(AIOP_Cli...]]></description><category></category></item><item><title><![CDATA[QCA4020之BLE 服务（2）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81742995</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81742995</guid><author>canyudeguang</author><pubDate>Thu, 16 Aug 2018 15:52:26 +0800</pubDate><description><![CDATA[0.前言

    在上一篇中，你会发现服务发现操作非常的简单，就只是调用了qapi_BLE_GATT_Start_service_Discovery这个api函数。但是它的重点是它的回调函数：GATT_Service_Discovery_Event_Callback。本文旨在说明这个函数的功能和代码流程。

 

1.事件

    首先来看，在服务发现操作的过程中，有两种事件会产生


typ...]]></description><category></category></item><item><title><![CDATA[QCA4020之BLE 服务（1）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81742726</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81742726</guid><author>canyudeguang</author><pubDate>Thu, 16 Aug 2018 15:48:15 +0800</pubDate><description><![CDATA[0.前言

    本系列主要是为了说明跟蓝牙服务相关的话题。首先以QCA4020板上注册的AIOS为例说明这个问题。

 

1.查看QCA4020板上已有的服务

     在服务端使用RegisterAIOS注册了AIOS服务之后，那么客户端就可以使用DiscoverServices来查找设备上的已经有的服务，得到的结果如下：


BLE: Service 0x0001 - 0x0001, ...]]></description><category></category></item><item><title><![CDATA[QCA4020新手上路（六）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81226019</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81226019</guid><author>canyudeguang</author><pubDate>Thu, 26 Jul 2018 19:26:07 +0800</pubDate><description><![CDATA[1.引言

    本文依然来讲HelloWorld_demo。本文旨在说明pal.c中的代码逻辑。

 

2.全局变量PAL_Context

    本文件中定义了一个很重要的全局变量PAL_Context


/*-------------------------------------------------------------------------
 * Type Declara...]]></description><category></category></item><item><title><![CDATA[QCA4020新手上路（五）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81225915</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81225915</guid><author>canyudeguang</author><pubDate>Thu, 26 Jul 2018 19:20:09 +0800</pubDate><description><![CDATA[1.引言

    本文依然来讲HelloWorld_demo。本demo中总共包含3个c程序文件：hello_world.c、pal.h、pal.c。本文旨在说明hello_world.c中每个函数的逻辑。

 

2.函数

    本文件中只包含了3个函数。


HelloWorld_Thread：线程函数
Initialize_Demo：初始化函数
App_Start：主体函数


 

...]]></description><category></category></item><item><title><![CDATA[QCA4020新手上路（四）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81225852</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81225852</guid><author>canyudeguang</author><pubDate>Thu, 26 Jul 2018 19:14:42 +0800</pubDate><description><![CDATA[1.引言

    本文旨在说明，在QCA4020中最简单的一个demo：HelloWorld_demo的整体框架，以及调用流程。

 

2.代码整体架构图



 

2.说明

（1）demo总体可以分为两个部分

初始化部分: app_init

主体部分: app_start

（2）如果用户想要执行任何有关的初始化动作，都可以放在app_init中调用

例如本demo中，hello_...]]></description><category></category></item><item><title><![CDATA[QCA4020新手上路（三）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81225349</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81225349</guid><author>canyudeguang</author><pubDate>Thu, 26 Jul 2018 19:10:04 +0800</pubDate><description><![CDATA[1.引言

     本文旨在说明如何在已经搭建好的开发环境中，编译代码，刷机。

 

2.获取高通提供的demo

     首先要从高通官网获取QCA4020的开发套件，下图是从官网获取的压缩包：



 

3.以QCLI_demo为例，示范如何编译和烧写该demo

（1）进入QCLI_demo的build/gcc目录下


cd PATH\QCA4020.OR.1.1_PostCS1\...]]></description><category></category></item><item><title><![CDATA[QCA4020新手上路（二）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81224585</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81224585</guid><author>canyudeguang</author><pubDate>Thu, 26 Jul 2018 18:23:07 +0800</pubDate><description><![CDATA[1.引言

      从QCA4020板的led指示灯，我们可以知道系统已经开始运行了。下一步就是搭建开发环境，本文说明的是在windows上如何搭建开发环境。

 

2.开发环境包含的内容有

（1）交叉工具链

（2）python

（3）putty

 

3.交叉工具链

因为我们需要在PC机上编译代码，再放入板内运行，所以需要安装交叉工具链。


https://developer....]]></description><category></category></item><item><title><![CDATA[QCA4020新手上路（一）]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/81223752</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/81223752</guid><author>canyudeguang</author><pubDate>Thu, 26 Jul 2018 17:36:28 +0800</pubDate><description><![CDATA[1.引言

    本文旨在说明，当拿到一块新的QCA4020板时，怎么供电，怎么启动这块板。

 

2.开机

（1）qca4020的整体外观

    首先让我们来看一下QCA4020板的真身。



 

（2）jumper

    其次我们来关注在板上那么多的jumper，它是我们能够正常启动QCA4020板的关键点。

    下图中，我已经将所有的jumper用红框标记出来，当然我...]]></description><category></category></item><item><title><![CDATA[shell脚本之颜色]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/53492257</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/53492257</guid><author>canyudeguang</author><pubDate>Tue, 06 Dec 2016 19:56:14 +0800</pubDate><description><![CDATA[当我们书脚本的时候，会想要把其中的某些部分进行重点的提示，这就涉及到怎么把字符标记显示不同的颜色。
       常用的颜色有：



黑色
\033[30m  xxx  \033[0m


红色
\033[31m  xxx  \033[0m


绿色
\033[32m  xxx  \033[0m


黄色
\033[33m  xxx  \033[0m]]></description><category></category></item><item><title><![CDATA[shell之检查端口服务是否正常]]></title><link>https://blog.youkuaiyun.com/canyudeguang/article/details/53491184</link><guid>https://blog.youkuaiyun.com/canyudeguang/article/details/53491184</guid><author>canyudeguang</author><pubDate>Tue, 06 Dec 2016 19:02:39 +0800</pubDate><description><![CDATA[有很多时候需要检查网络服务的端口是否正常，以下是几种常用的方法。
       1.telnet#/bin/sh
. /etc/init.d/functions
if [ $# -ne 1 ]
then
     echo "Usage: sh $1 ip"
     exit
fi
num=`echo -n "\n"|telnet $1 80|grep Connected|wc -l`
if]]></description><category></category></item></channel></rss>