天天看点

CC3200学习笔记1      CC3200 ROM SERVICES

cc3200自带ROM中带有三部分程序:设备初始化固件,BOOTLOADER,外设驱动库

当设备上电、复位、或者从冬眠中唤醒时,先执行初始化程序,然后BOOTLOADER开始执行,将程序代码从FLASH复制到内部RAM中,最后中转到程序入口开始执行。

1      CC3200 ROM SERVICES

         CC3200ROM包含有BOOTLOADER 和外设驱动库。外设驱动库是外设程序的接口集合。在ROM中提供驱动库,可以减少用户应用程序对RAM的占用。

         BOOTLOADER有两个作用:烧写外部FLASH,和装载外部FALSH中的用户程序到MCURAM中。

1.1  CC3200 BOOTLOADER

ROM中BOOTLOADER的两个用途:

l  更新/下载:从PC中下载应用程序文件到CC3200。Bootloader-DNLD只有当板子在SOP(UARTLOADSense On Power)模式下才能被启动。

l  引导程序:负责在外部FALSH中扫描有效的应用程序。找到应用程序后,将程序装载到内部RAM中,然后,将MCU控制权交给应用程序

1.1.1  BOOTLOADER 工作模式选择:改变SOP引脚状态

CC3200有三个SOP引脚,根据上文介绍,BOOTLOADER有两种模式:

l  设置SOP]2:0] =0B100,BOOTLOADER进入下载模式,在下载模式下,一个外部的触发信号可以一个相应的操作,如simplelink 编程应用通过UART发送一个”break”信号,然后跟随相应的序列,可以将应用程序文件烧写到外部串行FLASH中。

l  设置SOP[2:0]=0B000,BOOTLOADER进入引导程序,加载应用程序到MCU内部RAM

1.1.2  BOOTLOADER和应用共享RAM

在下载模式下,BOOTLOADER需要占用MCU内部RAM的16K空间,这意味着,对于最大256K内部RAM的CC3200来说,留给应用程序的RAM空间最大为240K。以下几点需要开发者注意:

l  MCU RAM地址范围从0x20000000 - 0x20003FFF:这个空间是由BOOTLOADER和应用程序共享的。开发者只能把这个空间当作数据空间,而不能当作代码空间;这样才能保证当BOOTLOADER装载用户代码到RAM中时,这个空间范围是由BOOTLOADER独占的。一旦内核控制权移交到应用程序,这个空间可以用来当作应用程序的数据空间。

l  0x20004000to END of RAM:这个空间被应用程序独享。应用程序的代码必须存放在这个范围内,并用由0x20004000作为起始地址。

l  不同型号的芯片RAM范围有所不同:

– CC3200R1M1:0x20004000 - 0x20020000

– XCC3200JR, CC3200R1M2: 0x20004000 - 0x20040000

– XCC3200HZ: 0x20004000 - 0x20030000

1.2  CC3200 ROM中的驱动库

用户的应用程序可以调用ROM中的设备驱动函数。CC3200SDK包中有整个驱动库的源代码,开发者可以用驱动库建立一个应用,在RAM中直接调用这些驱动函数。

这一章的目的是告诉开发者怎样使用驱动函数,重写驱动函数,扩展新的驱动函数

1.2.1  访问ROM中的驱动库

在ROM空间中,通过以下重定向列表,可以调用到相应的ROM API,同时在兼容现有API的基础上,允许未来进行扩展。在以后的ROM版本中,API的存放位置可能会改变,但是API列表不会改变。

API列表分为两部分:主列表和次列表。主列表中,一个外设对应一个地址指针,这个指针指向此外设的次列表空间;每一种外设对应有一个次列表,次列表中包含有外设相关的所有API地址。

主列表在ROM中的地址为0x0000040C,以下表中列表举了一小部分API列表:

ROM_INTERRUPTTABLE的地址为0x0000041C,ROM_IntMasterEnable()函数的地址为ROM_INTERRUPTTABLE地址向后偏移4。

ROM_APITABLE是一个存放在地址0x0000040C上的指针。

ROM_INTERRUPTTABLE是一个存放在地址ROM_APITABLE[4]上的指针数据。

ROM_INTERRUPTTABLE [1]表示一个函数指针,这个指针指向ROM_IntMasterEnable函数。

1.2.2  将ROM API链接到用户程序

1.        所有用到驱动库API的.c文件必须按顺序包含以下头文件:

                                                i.             • #include rom.h

• #include rom_map.h

2.        所有工程文件必须添加定义:define TARGET_IS_CC3200

3.        调用API时,必须在前边加MAP_;如,要调用UARTCharPut,就要调用MAP_UARTCharPut.任何对API的改动或扩展也要遵守这个原则。

4.        重新编译相关的工程。

1.2.3  重定义ROM API

对ROM API重定义后,API是存放在RAM中的,调用RAM的API代码。

1.        在文件\driverlib\rom_patch.h 中声明需要重定义的API函数

2.        例如:要重定义MAP_UARTCharPut和MAP_UARTBreakCtl,则在rom_patch.h文件中添加:

a)        • #undef ROM_UARTCharPut

• #undef ROM_UARTBreakCtl  

3.        重新编译相关工程

1.2.4  完全使用RAM中的驱动库

删除全局定义define TARGET_IS_CC3200,重新编译工程。

1          配置

1.1         概述

WIFI配置,即用AP名称(即SSID)和密码将一个WIFI设备(站点)接入到网络(AP)的过程。WIFI安全标准有个人安全级别(家庭、办公室等)和企业安全级别(大型办公环境和集团办公环境)。建立企业级的WIFI连接,通常需要安装IT部门用安全服务器生成的证书,来保证站点和网络的可靠性。而个人WIFI的安全,需要用户自己在家解决,通常采用安全密码,为了提高网络的安全,密码最长可以达到64个字节。

1.2         SmartConfig

1.2.1    概述

SmardConfig是TI在2012年开始引入的技术,用于配置没有多余周边设备的WIFI站点。用户通过手机、平板或者笔记本电脑将相应的网络认证信息广播给一个未配置的WIFI设备。当未配置的设备触发SmartCofnig,它将进入扫描状态,等待智能手机APP广播出来的网络配置信息。为了发送SmartConfig信号,手机必须已经连接到一个WIFI网络,通常就是WIFI新设备将要接入的网络。

1.2.2    使用说明(API)

1.2.2.1   自动激活(出厂例程)

给设备通电,通常设备先进入STA角色,如果之前没有添加过配置信息,设备在几秒钟无操作后,自动进入SmartConfig状态。

在智能手机或PC上启动SmartConfig应用:

1.        将手机或PC连接到任意一个WIFI

2.        在APP上输入WLAN认证信息(SSID,安全证书)

3.        输入密码

4.        点击开始按钮

SmartCofnig操作会在几秒内完成,最长需要两分钟。如果要目标网络离地很近,WIFI设备会立即连接上。

使用自动激活需要注意:

1.        对WIFI设备的任何命令都将会中断SmartConfig操作

2.        如果设备串行FLASH中保存有密钥,WIFI密码将会被加密,用户需要提供密钥

3.        如果SmartCofnig自动开始将,设备配置信息被改变,可能会有意外发生,这种情况下保证以下几点:

l  设置为自动开始策略

l  设置为自动开始SmartConfig

l  之前没有添加过配置信息

用户可以调用sl_WlanPloicyGet(SL_POLICY_CONNECTION,0, pVal, pValLen);来查看确认以上配置,返回的策略信息保存在回调指针pVal的位置上。

如果位0为1,表示Auto Start已设置

如果位4为1,表示Auto SmartCofnig已设置

如果相应的配置不符,可以手动设置策略:

Sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(1, 0, 0, 0, 1), NULL, 0);

                                               为了确保没有保存错误的配置信息,可以先删除之前保存的配置信息:sl_WlanProfileDel(255);

                                               调用这些命令后,复位设备,SmartConfig将会被成功启动。

1.2.2.2   手动激活

手动开户SmartConfig,调用以下命令:

Sl_WlanSmartCofnigStart(groupIdBitmask, cipher, publicKeyLen,group1KeyLen, group2KeyLen, publicKey, group1Key, group2Key)

参数介绍:

l  groupIdBitmask – 1为默认组ID掩码

当密钥没有保存在FALSH中时,需要使用加密密码,参考以下参数:

l  cipher = 1

l  publicKeyLen = 16

l  group1KeyLen = 0

l  group2KeyLen = 0

l  publicKey = 此处为密钥(16字节字符串)

l  group1Key = NULL

l  group2Key = NULL

当密钥保存在FLASH中时,为了使用密码密码,参考以下参数:

l  cipher = 0

l  publicKeyLen = 0

l  group1KeyLen = 0

l  group2KeyLen = 0

l  publicKey = NULL

l  group1Key = NULL

l  group2Key = NULL

如果不需要使用密码密码,参考以下参数

l  cipher = 1

l  publicKeyLen = 0

l  group1KeyLen = 0

l  group2KeyLen = 0

l  publicKey = NULL

l  group1Key = NULL

l  group2Key = NULL

调用这条命令后,SmartConfig将会启动

手动启动SmartConfig时,如果加密密码的密钥保存在外部FLASH,或者由命令传入,则密钥必须先同SmartConfig APP提供

1.2.2.3   停止 Smart Config

调用以下命令停止S martCofnig:

Sl_WlanSmartCofnigStop()

注意:

l  设备接入目标网络后,会从AP或者路由器收到一个IP地址

l  如果智能手机连接的WIFI网络使用的发送模式和速率对SmartCofnig来说不合适,SmartCofnig操作可能不会成功。这种情况下需要使用AP配置方法。

1.3         ACRESS POINT模式

1.3.1    简介

对于没有输入接口的设备,配置网络最常用的方法是AP模式。在AP模式,未配置的设备作为一个AP来启动,制造通常会为设备定义一个默认的SSID。当第一次接入家庭网络前,新设备先创建一个属于自己的网络,PC或者智能手机可以直接接入这个网络,完成它的第一次网络配置。

1.3.2    使用方法及API

1.3.2.1   首先,启动设备为AP角色,有两个方法:

a)                      调用sl_WlanSetMode(mode), mode应该为ROLE_AP,然后重启设备

b)                      强制设备以 AP方式启动

1.3.2.2   用智能手机或者其它带有WIFI功能的设备扫描目标设备。在可用WIFI列表中,我们的设备名称应该为mysimplelink-xxyyzz,xxyyzz是设备MAC地址的后6字节。如果你调用过sl_WlanCfgSet(0, 0, ssid_length, ssid)修改设备SSID,你修改的SSID会出现在WIFI列表 中。如果 你没有修改过SSID,但是修改过设备URN(调用sl_NetAppSet(16,0, urn_length, urn),那么设备名称应该为urn_xxyyzz, xxyyzz为设备MAC地址的后6字节。

1.3.2.3   在WIFI列表界面,选择目标设备网络并连接

注:如果你没有修改过安全模式,设备的网络应该为开放网络。否则你需要输入相应的密码

1.3.2.4   接入设备网络后,在手机上打开浏览器,输入地址:http://www.mysimplelink.net

1.3.2.5   进入Profiles 选项

1.3.2.6   输入WLAN 认证信息(SSID, 安全类型,密钥),选择这个配置参数的优先级(0-7任一数值),点击Add 按钮

1.3.2.7   滚动到页面最低部,检查刚才添加的网络是否被添加上(此处不会显示密码)

1.3.2.8   以STA 角色重启设备。在Device Config页面设置设备械为Station(或者取下强制AP跳帽P58),复位设备。设备重启后,会自动连接到设置好的目标网络。

1.3.3    以AP方式配置时需要注意:

当用智能手机连接到设备AP时,设备上运行有DHCP服务器,并且会分配给手机一个IP地址。所以,智能手机(或者其它设备)不能使用静态的IP地址

输入WIFI认证信息后,选择STA模式,复位设备。设备将会连接到目标网络,并且从AP或者路由器接收到一个IP地址。