电子说
一 概述
TCP相关内容参考3.05 TCP组件
二 功耗的组成
低功耗技术就是一系列的降低功耗的技术。
在了解低功耗技术之前,我们必须先了解功耗的构成。
一个SOC芯片的功耗由两部分组成:动态功耗和静态功耗。
动态功耗是设备运行时或者说信号改变时所消耗的功耗;
静态功耗是设备上电但是信号没有改变时所消耗的功耗;
这里要注意的是:在设备运行时,也需要消耗静态功耗的,因为设备运行时也是上电状态。功耗分类把静态功耗单独拿出来,只是为了理论分析方便。
2.1 动态功耗
动态功耗可以分为:
1. 翻转功耗(有的地方称为开关功耗,但是笔者认为这个名字不准确,因为开关包含的功耗很多,其实是从英文switching power翻译过来,从switching可以看到,名称想表现是动作。所以称为翻转功耗比较准确)
2. 短路功耗(或者称为内部功耗,英文是internal power)
2.1.1 翻转功耗(switching power)
Switching power 是一个门电路对输出电容进行充电和放电需要的功耗。简单的说就是一个门电路输出从0变到1和从1变到0所需要消耗的功耗。
Switching power 是动态功耗最主要的组成部分。
下面是一个CMOS非门(反相器)的门电路,输出接了一个输出电容:
清晰一点的符号图如下:
每次传输的能量消耗为:
CL是输出的电容大小;Vdd是供电电压。这样我们可以计算出传输的功耗为:
f是传输的频率;Ptrans是输出翻转的概率;fclock是时钟频率。
这里用fclock*Ptrans=f是合理的,因为时钟就是输出是否改变的参考,乘以概率,就是翻转的频率。
如果我们定义:
即把电容乘以翻转概率定义为有效电容,那么我们可以得到经常见到的计算公式如下:
推导过程其实很简单,但是这个最终的结果却十分重要。
1. Switching power 和电压,翻转率,负载电容有关;
2. Switching power和数据无关,也就传输的数据不会影响翻转功耗,但是数据的翻转率会影响翻转功耗;
3. Switching power和传输的大小也无关
由这个公式我们很容易得到如果想减少功耗,那么方法就是:
1. 降低电压;
2. 降低翻转率;
3. 减少负载电容
当然,这些方法的前提永远是芯片的功能要满足要求。功率再低,功能不满足的芯片和板砖有什么区别,起码板砖还能拍人。
芯片的功能要满足要求这个基础就决定了这些方法有一些限制,比如不可能把电压降到0,不可能让信号永远不翻转,不可能电容减少到0。这些都是前提。
2.1.2 内部功耗(internal power)
内部功耗又可以称为短路功耗,因为主要原因是由于短路造成的。短路功耗是因为在输入信号进行翻转时,信号的翻转不可能瞬时完成,因此PMOS和NMOS不可能总是一个截止另外一个导通,总有那么一段时间是使PMOS和NMOS同时导通,那么从电源VDD到地VSS之间就有了通路,就形成了短路电流,如下面的反相器电路图所示:
加上短路功耗后,总的动态功耗如下:
后面的部分就是短路功耗。tsc是短路电流持续的时间,Ipeak是总的短路电流(包含了内部电容充电的电流)
由于传输中短路持续的时间特别短,短路功耗相比翻转功耗来说小很多。所以一般情况下会忽略短路功耗,把翻转功耗就当作动态功耗,那么动态功耗的简化公式就是:
但是值得注意的是,有的情况下,还是要考虑短路功耗,比如如何处理门控模块的悬空的输出的时候。
2.2 静态功耗
静态功耗是由于漏电流引起的,在CMOS 门中,漏电流主要来自4个源头:
1. 亚阈值漏电流(Sub-threshold Leakage, ISUB): 亚阈值泄漏电流是晶体管应当截止时流过的电流.
2. 栅极漏电流(Gate Leakage, Igate): 由于栅极氧化物隧穿和热载流子注入,从栅极直接通过氧化物流到衬底的电流。
3. 栅极感应漏电流(Gate Induced Drain Leakage, IGIDL): 结泄漏电流发生在源或漏扩散区处在与衬底不同电位的情况下。结泄漏电流与其他泄漏电流相比时通常都很小。
4. 反向偏置结泄漏(Reverse Bias Junction Leakage ,IREV):由少数载流子漂移和在耗尽区产生电子/空穴对引起。
MOS管的结构图如下:
漏电流组成如下图所示:
2.2.1亚阈值漏电流(Sub-threshold Leakage)
亚阈值漏电流(Sub-threshold Leakage)发生在CMOS gate没有完全关断时。一个比较好的计算公式如下:
W/L是晶体管的尺寸,Vth是热相关常量;Cox/Vth/W/L都是工艺相关,不可以调整。VGS就是VDD;
VT是阈值电压;可以看到,阈值电压越高,漏电功耗就越低。但是阈值电压越高,对应的翻转速度就会越慢,延时就会越大,性能就越差。
1. 可以通过调整VDD/VT来降低漏电流,从而减少漏电功耗。
2. 增加VT会带来性能损失,只能在满足功能需求前提下增加VT;
3. ISUB只和VDD/VT有关,和信号翻转这些都没关系。这是一个工艺强相关的电流,RTL设计对其无影响。
亚阈值泄漏电流随温度呈指数增长(Vth)。这大大增加了设计低功率系统的复杂性。即使在室温下的泄漏是可以接受的,在最坏的情况下,温度会超过芯片的设计目标。
2.2.2栅极漏电流(Gate Leakage)
栅极泄漏电流发生在一个电压加到栅上时(例如当门导通时)载流子遂穿通过薄栅介质的情况下。
泄漏电流与介质厚度有极强的关系。工艺中通过选择合适厚度的介质将栅泄漏电流限制到一个可接受的水平上。泄漏电流还取决于栅极电压。通过使晶体管堆叠起来并使截止晶体管靠近电源/地线可以使栅泄漏电流减小。
在以往的技术节点中,漏电电流一直以亚阈值漏电为主。但是从90nm开始,门极漏电几乎是亚阈值漏电的1/3。在某些情况下,在65nm工艺下,它可以等于亚阈值泄漏。低于65nm,high-k介电材料必须进行保持门级泄漏电流检查,这似乎是唯一有效减少门泄漏电流的方法。
其他两种流电流占比比较小,所以一般不做分析。有时会把静态功耗统一为一个公式:
Ipeak为泄露电流,减少静态功耗的方法就是减小VDD和Ipeak。
2.3 不同结构的功耗组成
SOC中不同结构的对功耗的消耗是不一样的。有几个功耗大户如下:
1. 时钟树功耗:时钟树的功耗通常占整个SOC功耗的40%左右,这是因为时钟是一直在翻转的信号,所以动态功耗特别大。所以门控时钟技术就特别重要。
2. CPU: CPU是SOC主控制器,工作时CPU一般都必须要打开,随着CPU频率越来越高,功耗也越来越大。所以现在的多核,大小核就比较流行,不同场景下用不同功耗的CPU核;
3. GPU: GPU是并行处理单元,由于其算力主要来自多个模块并行计算,为了正常工作,通常需要很多模块同时运算,功耗也很大,所以很多SOC都不带GPU或者默认关掉;
4. 存储器:DDR这些存储器作为SOC主存也需要时刻使用,也是功耗消耗的大户。
SOC还有其他模块,但是时钟树,CPU/GPU, 存储器占了绝大部分的功耗。在AI芯片的时代,CCN IP也是功耗的主要来源,和GPU比较类似。
三 组件的使用
1 Gitee链接地址
Demo位于amaziot_bloom_os_sdksamplelibraries5.19-app_low_power
Gitee源码地址:https://gitee.com/ning./hongdou
Github源码地址:https://github.com/ayumid/hongdou
编译指令:.build.bat -l .amaziot_bloom_os_sdksamplelibraries5.19-app_low_power
2 组件功能介绍
组件实现了 TCP 通信下的低功耗。
设备上电后会连接 TCP 服务器,之后发送登录字符串“login”,服务器回复字符串“login_resp”后,设备会进入低功耗状态。低功耗状态下,设备每隔60s会给服务器发送心跳字符串“heart”。当设备在低功耗状态下,服务器发送“wakeup”,设备会唤醒。服务器发送“suspend”,设备会重新进入低功耗。测试平均功耗大概是5mA左右(参考下方固件测试图)。
组件提供一个GPIO控制,如果硬件设计中是MCU+AM430EV5,通过这个IO,可以唤醒MCU。
3 代码讲解
1 low_power_gpio_init
功能:该函数用于,组件提供的用于唤醒主控MCU的GPIO。
参数:无
返回值:无
示例:
low_power_gpio_init();
2 low_power_gpio_out
功能:该函数用于,GPIO输出,用于适当的时间唤醒主控MCU。
参数:
参数 | 释义 |
val | 输出电平 |
返回值:0
示例:
low_power_gpio_out(1)
3 low_power_send_msg
功能:该函数用于,发送消息给主任务。
参数:
参数 | 释义 |
msgId | 消息ID |
extra | 按需使用,额外信息 |
data | 按需使用,额外数据 |
返回值:无
示例:
low_power_send_msg(LOW_POWER_CMD_SUSPEND, 1, NULL);
4low_power_set_mcu_wake
功能:该函数用于,唤醒mcu。
参数:
参数 | 释义 |
ad | 消息指针 |
wake | gpio输出状态 |
返回值:无
示例:
low_power_set_mcu_wake(ad, 1);
5low_power_wakeup_internal
功能:该函数用于,关闭网络连接。
参数:
参数 | 释义 |
ad | 消息指针 |
返回值:文件指针
示例:
low_power_net_close(ad);
6low_power_net_send
功能:该函数用于,发送数据。
参数:
参数 | 释义 |
ad | 消息指针 |
data | 数据指针 |
sz | 数据长度 |
返回值:无
示例:
low_power_net_send();
7low_power_net_init
功能:该函数用于,发送数据。
参数:
参数 | 释义 |
ad | 消息指针 |
返回值:无
示例:
low_power_net_init(ad);
8low_power_net_connect
功能:该函数用于,连接服务器。
参数:
参数 | 释义 |
ad | 消息指针 |
fd | 套接字描述符 |
data | 数据指针 |
sz | 数据长度 |
返回值:无
示例:
ret = low_power_net_connect(ad, fd, rp- >ai_addr, rp- >ai_addrlen);
9low_power_net_create
功能:该函数用于,发送数据。
参数:
参数 | 释义 |
ad | 消息指针 |
返回值:无
示例:
low_power_net_create(ad);
10low_power_net_recv
功能:该函数用于,接收服务器信息。
参数:
参数 | 释义 |
ad | 消息指针 |
返回值:无
示例:
ret = low_power_net_recv(ad);
11low_power_task
功能:该函数用于,主任务。
参数:
参数 | 释义 |
param | 任务参数指针,可不用 |
返回值:无
示例:
low_power_task();
12low_power_config
功能:该函数用于,配置低功耗相关的信息。
参数:
参数 | 释义 |
ad | 消息指针 |
返回值:无
示例:
low_power_config();
13low_power_init
功能:该函数用于,初始化低功耗需要的资源,任务等。
参数:无
返回值:无
示例:
low_power_init();
4 Demo实战
4.1 创建一个Demo
复制4.2_hal_UART示例工程,到同一个文件夹下,修改文件名为5.19-app_low_power,如图:
4.2 修改makefile
增加文件组件所在目录头文件路径,和源文件路径,如图:
4.3 增加头文件
使用代码编辑器,将新建的工程文件加入代码编辑器中,打开main.c,修改main.c,加入am.h等头文件,如图:
4.4 修改代码
在Phase2Inits_exit 调用低功耗初始化函数,如图:
4.5 宏定义介绍
low_power_uart_printf
输出日志到DEBUG 串口,日志比较少,可以输出到这个串口,如果日志比较多,需要输出到usb口,以免不必要的问题出现
low_power_catstudio_printf
输出日志到USB 串口,使用catstudio查看,catstudio查看日志需要更新对应版本mdb.txt文件,软件打开filtter过滤日志,只查看用户输出的日志
LOW_POWER_TASK_STACK_SIZE
栈空间宏定义
4.6 函数介绍
Phase1Inits_enter
底层初始化,本例空
Phase1Inits_exit
底层初始化,本例空
Phase2Inits_enter
底层初始化,本例空
Phase2Inits_exit
创建主任务,初始化消息队列,定时器,任务等。
代码片段:
int ret; sample_ele_log_uart_printf("debug > enter mainn"); ret = OSAFlagCreate(&sample_ele_log_flag_ref); ASSERT(ret == OS_SUCCESS); ret = OSATimerCreate(&sample_ele_log_timer_ref); ASSERT(ret == OS_SUCCESS); ret = OSATaskCreate(&sample_ele_log_task_ref, sample_ele_log_task_stack, SAMPLE_ELE_LOG_TASK_STACK_SIZE, 200, "filetest-task", sample_ele_log_task, NULL); ASSERT(ret == OS_SUCCESS); OSATimerStart(sample_ele_log_timer_ref, 5 * 200, 5 * 200, sample_ele_log_timer_callback, 0); // 3 seconds timer
sample_ele_log_timer_callback
定时器回调函数,发送事件给主任务。
代码片段:
OSAFlagSet(sample_ele_log_flag_ref, SAMPLE_ELE_LOG_TASK_TIMER_CHANGE_FLAG_BIT, OSA_FLAG_OR);
sample_ele_log_task
日志写入任务,由事件驱动,这里5s一次。
代码片段:
while(1) { status = OSAFlagWait(sample_ele_log_flag_ref, flag_mask, OSA_FLAG_OR_CLEAR, &flag_value, OSA_SUSPEND); ASSERT(status == OS_SUCCESS); // sample_ele_log_uart_printf("debug > sample_ele_log_count = %d",sample_ele_log_count); // sample_ele_log_uart_printf("%s[%d] freesize: %d", __FUNCTION__, __LINE__, FDI_GetFreeSpaceSize()); if(flag_value & SAMPLE_ELE_LOG_TASK_TIMER_CHANGE_FLAG_BIT) { air_sw_log_write_data(11111.111111); } else { sample_ele_log_uart_printf("debug > open file for write errorn"); } }
4.7 编译
在SDK根目录打开命令行,输入命令.build.bat -l .amaziot_bloom_os_sdksamplelibraries8.5_ele_log
PS F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF λ .build.bat -l .amaziot_bloom_os_sdksamplelibraries8.5_ele_log 子目录或文件 outbin 已经存在。 命令语法不正确。 子目录或文件 buildobj 已经存在。 gnumake: Entering directory `F:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/libraries/8.5_ele_log' armcc.exe -c --cpu Cortex-R4 --no_unaligned_access -g -O2 --apcs /inter --diag_suppress 2084,1,2,177,188,223,550,1296,2795,6319,9931,9933 --diag_error=warning --gnu --thumb --loose_implicit_cast -DDATA_COLLECTOR_IMPL -DISPT_OVER_SSP -DDIAG_SSP_DOUBLE_BUFFER_USE_DYNAMIC_ALLOCATION -DENV_XSCALE -DL1_DCXO_ENABLED -DLTE_HIGH_MOBILITY_OPTIMIZATION -DRUN_XIP_MODE -DCRANE_Z2 -DCA_LONG_IPC_MSG -DNEZHA3 -DNEZHA3_1826 -DUPGRADE_PLMS -DUPGRADE_PLMS_SR -DLTE_GSMMULTIBCCH -DGPLC_LTE_RSSI_SCAN -DL1V_NEW_RSSI -DUPGRADE_PLMS_3G -DUPGRADE_PLMS_L1 -DUPGRADE_FG_PLMS -DFG_PLMS_URR -DUPGRADE_L1A_FG_PLMS -DUPGRADE_PLMS_STAGE_2 -DUPGRADE_MBCCH -DMULTI_BCCH_READY_IND -DURR_MRAT_ICS_SEARCH -DUPGRADE_ICS -DMRAT_NAS -DUPGRADE_PLMS_SEARCH_API -DICS_MBCCH -DICS_MBCCH_2G_RSSI -DDIAG_NEWPP -DPHS_SW_DEMO -DPHS_SW_DEMO_TTC -DPHS_SW_DEMO_TTC_PM -DFULL_SYSTEM -D_DDR_INIT_ -D_TAVOR_HARBELL_ -DUPGRADE_ARBEL_PLATFORM -D_TAVOR_B0_SILICON_ -DTDL1C_SPY_ENABLE -DDLM_TAVOR -DTAVOR -DFLAVOR_DUALCORE -DDEBUG_D2_MOR_REG_RESEREVED_ENABLE -D_DIAG_USE_COMMSTACK_ -D_TAVOR_DIAG_ -DPM_DEBUG_MODE_ENABLED -DPM_D2FULL_MODE -DPM_EXT_DBG_INT_ARR -DFEATURE_WB_AMR_PS -DMACRO_FOR_LWG -DHL_LWG -DOPTIMIZE_FOR_2G_BCCH -DPLAT_TEST -D_FDI_USE_OSA_ -DPLAT_USE_THREADX -DLWIP_IPNETBUF_SUPPORT -DCRANE_MCU_DONGLE -DAT_OVER_UART -DPHS_SW_DEMO_TTC_PM -DUPGRADE_LTE_ONLY -DEXT_AT_MODEM_SUPPORT -DLTEONLY_THIN_SINGLE_SIM -DLFS_FILE_SYS -DLFS_FILE_SYS_V2 -DPSM_ENABLE -DNO_PAHO_MQTT -DNO_XML -DNO_LWM2M -DREMOVE_MBEDTLS -DNO_AT_NET -DCRANE_SD_NOT_SUPPORT -DNTP -DYMODEM_EEH_DUMP -DENABLE_DM_LTEONLY -DLTEONLY_THIN -DNO_EXTEND_MY_Q_AT -DNOT_SUPPORT_HTTPS -DNOT_SUPPORT_PM813 -DCRANEL_4MRAM -DREMOVE_PB -DUART_NEW_VERSION -DREMOVE_MEP -DREMOVE_SMS -DREMOVE_ENVSIM -DAPN_INCODE -DLTEONLY_THIN_SINGLE_SIM_2MFLASH -DASR160X_OPENCPU_FEATURE -DENABLE_UART3_FEATRUE -DENABLE_UART4_FEATRUE -DYUGE_MBEDTLS_3_2_1 -DENABLE_MAC_TX_DATA_LOGGING -DDISABLE_NVRAM_ACCESS -DINTEL_UPGRADE_EE_HANDLER_SUPPORT -DLTE_W_PS -DL1_DUAL_MODE -DUPGRADE_HERMON_DUAL -DINTEL_UPGRADE_DUAL_RAT -DINTEL_UPGRADE_GPRS_CIPHER_FLUSH -DUPGRADE_ENHANCED_QUAD_BAND -DINTEL_2CHIP_PLAT -DI_2CHIP_PLAT -DUPGRDE_TAVOR_COMMUNICATION -DRUN_WIRELESS_MODEM -DFLAVOR_DDR12MB_GB1MB5 -DFEATURE_SHMEM -DACIPC_ENABLE_NEW_CALLBACK_MECHANISM -DRELIABLE_DATA -DMAP_NSS -DTV_FNAME=""SW_PLATFORM=PMD2NONE PHS_SW_DEMO PHS_SW_DEMO_PM SRCNUCLEUS FULL_SYSTEM NOACRTC PDFLT PLAT_TEST PV2 DIAGOSHMEM NVM WITHL1V"" -DTV_FDESC=""SW_DESCRIPTION="" -DENABLE_ACIPC -D_DATAOMSL_ENABLED_ -DUSB_CABLE_DETECTION_VIA_PMIC -DMIPS_TEST -DMIPS_TEST_RAM -DFLAVOR_DIET_RAM -DNVM_INCLUDE -DMSL_INCLUDE -DMSL_POOL_MEM -DNO_AUDIO -DOSA_QUEUE_NAMES -D_DIAG_DISABLE_USB_ -DOSA_NUCLEUS -DOSA_USED -DPM_D2NONE_MODE -DCRANE_SOC_TEMPERATURE_SENSOR -DL1_SW_UPDATE_FOR_DIGRF -DPHS_L1_SW_UPDATE_R7 -DUPGRADE_LTE -DFRBD_CALIB_NVM -DFRBD_AGC_CALIB -DFRBD_FDT_CALIB -DHSPA_MPR -DCAPT_PARAMS_OPTIMIZE -DL1_WB_R99_ONLY -DL1V_WB_R99_ONLY -DINTERGRATED_RF_SUPPORT -DL1_RX_DIV_SUPPORT -DENABLE_OOS_HANDLING -DTAVOR_D2_WB_L1_SUPPORT -DL1_DDR_HIGH_FREQ -DUPGRADE_DIGRF3G_SUPPORT -DW_PS_PLUS_G_PAGING -D"NO_APLP=0" -DINTEL_UPGRADE_UNIFIED_VOICE_TASK -DINTEL_UPGRADE_R99 -DAPLP_SPY_ENABLE -D__TARGET_FEATURE_DOUBLEWORD -DWHOLE_UMTS_STACK -DUSE_TTPCOM_CSR_BLUETOOTH_AUDIO_GAIN_CONTROL -DL1_UPGRADE_R5 -DUPGRADE_EDGE -DUPGRADE_R4_FS1 -DINTEL_UPGRADE_GSM_CRL_IF -DUPGRADE_EGPRS_M -DINTEL_UPGRADE_EGPRS_M -DINTEL_UPGRADE_RF_PARAMS_IN_CF_TDS -DINTEL_UPGRADE_2SAMPLES_PER_SYMBOL -D"GPRS_MULTISLOT_CLASS=12" -D"EGPRS_MULTISLOT_CLASS=12" -DMARVELL_UPGRADE_BSIC_REDESIGN -DMSL_INCLUDE -DINTEL_HERMON_SAC -DCRANE_CUST_BUILD -DL1_SW_UPDATE_FOR_DIGRF -DFLAVOR_COM -DSILICON_PV2 -DSILICON_SEAGULL -DSILICON_TTC_CORE_SEAGULL -DPCAC_INCLUDE -Otime -DBUILD_DATE=""08 07 2024"" -DBUILD_TIME=""17:06:38"" -Iatcmdsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptelephonyyugeinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalUARTinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalcoreinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalPMUinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalGPIOinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xosposixinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xdiagdiag_logicsrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xcswSysCfginc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xcswplatforminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xenvwin32inc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xcswBSPinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xcswplatformdev_platbuild -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xososainc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xosthreadxinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xosnu_xscaleinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacpsminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcachttpclientsrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xdiagdiag_logicinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptimerinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopintcinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xcswPMinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoppminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilTickManagerinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopBSPinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptelephonyatcmdsrvinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptelephonyatparserinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptelephonysdkinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcachttpclientinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacciinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcaclwipv4v6srcinclude -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcaclwipv4v6srcincludearch -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcaclwipv4v6srcincludeipv4 -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcaclwipv4v6srcincludeipv6 -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcaclwipv4v6srcincludelwip -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcaclwipv4v6srcincludenetif -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopmmi_matinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xtavorArbelinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xtavorenvinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptelephonymodeminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacdusterinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacfotainc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalI2Cinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalACIPCinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilfatsysflash -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilFDIsrcINCLUDE -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalMMUinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilFDIsrcFDI_ADD -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilFDIsrcFM_INC -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilfatsysfshdr -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutillittlefsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacttsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacdialinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilcsw_memoryinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoputilitiesinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopcommpminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilnvminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilEEhandlerinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilEEhandlersrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopRTCinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhoptelephonyci_clientinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalBT_deviceinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalUARTinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopmrdinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopdmainc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilsoftutilinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhalSPIinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacwebsocketinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacatnet_srvinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xsoftutilfotacomminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xaud_swAudioinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xaud_swACM_COMMinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xaud_swaudio_stubsrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhopaaminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xaud_swAudioHALinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xhaldbgshellinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFincludeasr160xpcacopencpuinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFamaziot_bloom_os_sdkutils -IF:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/libraries/8.5_ele_logaminc -IF:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/libraries/8.5_ele_logatcmdsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFamaziot_bloom_os_sdklibraries -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFamaziot_bloom_os_sdklibrariesair_4g_swair_sw4_tuya -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFamaziot_bloom_os_sdkutils -o buildobj/ext_at_cmds.o F:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/libraries/8.5_ele_log/atcmds/src/ext_at_cmds.c armlink.exe buildobj/main.o buildobj/ext_at_cmds.o buildobj/ext_at_controller.o buildobj/utils_string.o buildobj/am_ty_sw_log.o -o F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFoutbinArbel_PMD2NONE_40M.axf --via F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFprebuilt_1606lArbel_PMD2NONE_targ_objliblist.txt --elf --scatter F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFprebuilt_1606lCrane_DS_4M_Ram_2M_Flash_XIP_CIPSRAM_Common_SingleSIM.sct --predefine="-DLTEONLY_THIN_SINGLE_SIM" --map --symbols --info sizes,totals --list F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFoutbinArbel_PMD2NONE_40M.map --keep init.o(Header) --keep init.o(Vectors) --diag_suppress 6312,6314,6319,6329 --feedback F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFoutfeedbackLinkOptLteonlyThin_SingleSim_NoSMS.txt F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRFtoolsbuildimage_1606l.bat SDK_PROD_TYPE : [DM] SDK_CUST_SKU : [THIN_SINGLE_SIM_NO_SMS] SDK_PS_MODE : [LTEONLY] SDK_CHIP_VER : [Z2A0] SDK_OS_TYPE : [TX] Platform Convertion Tools v4.01 with PS option extension Convertion done! |INPUT |outbincp_1606L.bin |MARK |NAME |EXEADDR .LOADADDR.LENGTH .CPZLADDR|COMPRESS STASTIC | |--------|--------|--------.--------.--------.--------|------------------------------| |This Is LteOnly 4M| |RW_CPZ_1|DDR_RW_ |7e119000.80064af8.0000cddc.80065000|0000cddc- >00003000 |This Is LteOnly 4M| |RW_CPZ_2|PS_NCAH |7e388000.800718d4.00001300.80068000|00001300- >00001000 |This Is LteOnly 4M| |RW_CPZ_3|ITCM |7e3dac00.80072bd4.0000f51c.80069000|0000f51c- >0000a000 |This Is LteOnly 4M| |RW_CPZ_4|CODE_PS |7e1aa000.800820f0.0002fe38.80073000|0002fe38- >0001e000 |This Is LteOnly 4M| |RW_CPZ_5|CODEPSB |7e1dc000.800b1f28.000339c0.80091000|000339c0- >0001b000 |This Is LteOnly 4M| |RW_CPZ_6|CODEPSC |7e213000.800e58e8.000323ec.800ac000|000323ec- >0001b000 |This Is LteOnly 4M| |RW_CPZ_7|CODEPSD |7e249000.80117cd4.00028d88.800c7000|00028d88- >0001a000 |This Is LteOnly 4M| |RW_CPZ_8|CODEPSE |7e277000.80140a5c.0002e310.800e1000|0002e310- >0001a000 |This Is LteOnly 4M| |RW_CPZ_9|CODEPSF |7e2a9000.8016ed6c.0001c948.800fb000|0001c948- >00011000 |This Is LteOnly 4M| |RW_CPZ_A|CODE_PL |7e2ca000.8018b6b4.0002fa44.8010c000|0002fa44- >0001e000 |This Is LteOnly 4M| |RW_CPZ_B|CODEPLB |7e2fa000.801bb0f8.00039058.8012a000|00039058- >00021000 |This Is LteOnly 4M| |RW_CPZ_C|CODEPLC |7e337000.801f4150.000268d4.8014b000|000268d4- >00011000 |--------|--------|--------.--------.--------.--------|------------------------------| | | 0x00203a24 - > 0x00145000| | | 2.014(MB) - > 1.270(MB)| |------------------------------------------------------------------------------------| cp_1606L.axf cp_1606L.bin cp_1606L.map gnumake: Leaving directory `F:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A09_WIHT_NEWRF/amaziot_bloom_os_sdk/sample/libraries/8.5_ele_log' "copy NEZHAC_CP_CNR_MIFI_TX.bin to ./ " 已复制 1 个文件。
4.8 生成固件
参考入门中开发工具,生成工具。
4.9 测试
测试步骤:
参考编译教程,和文档开头的编译指令,进行编译
按照编译教程选择对应的选项
烧录
4.10 固件
TCP连接
60s一次心跳,测试1小时;
点击下载 TCP 长连接 低功耗 Demo 固件
5 生态组件链接
无
本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf)
欢迎同学们走进AmazIOT知识库的世界!
这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。
Cellular IoT Wiki初心:
在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。
Cellular IoT Wiki沉淀的技术内容方向如下:
奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。
连接我们,和10000+物联网开发者一起降低技术和成本门槛
让蜂窝物联网应用更简单~~
哈哈你终于滑到最重要的模块了,
千万不!要!划!走!忍住冲动!~
欢迎加入飞书“开源技术交流群”,随时找到我们哦~
点击链接如何加入奇迹物联技术话题群(https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf)可以获取加入技术话题群攻略
Hey 物联网从业者,
你是否有了解过奇迹物联的官方公众号“eSIM物联工场”呢?
这里是奇迹物联的物联网应用技术开源wiki主阵地,欢迎关注公众号,不迷路~
及时获得最新物联网应用技术沉淀发布
(如有侵权,联系删除)
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !