iap

LPC1768IAP(详解,有上位机)

被刻印的时光 ゝ 提交于 2020-03-10 04:11:35
  之前说了stm32的iap编程,今天天气真好,顺手就来说说lpc1788的iap编程(没看前面的请查看stm笔记下的内容)   首先是flash的算法,lpc1768并没有寄存器来让我们操作flash,他内置了iap的flash算法,在技术手册的525页有如下说明      其支持的iap命令有这些 这样我们就能够做出相关的flash读写借口呢(具体请查看lpc1768的技术手册) unsigned param_table[5];//传递参数列表 unsigned result_table[5];//返回结果列表 //调用iap命令 void iap_entry(unsigned param_tab[],unsigned result_tab[]) { void (*iap)(unsigned [],unsigned []); iap = (void (*)(unsigned [],unsigned []))IAP_ADDRESS; iap(param_tab,result_tab); }   通过这种手段就能够调用iap命令,我们演示性的看一个命令 //扇区准备好指令 //起始扇区号 结束扇区号 系统时钟 void prepare_sector(unsigned start_sector,unsigned end_sector,unsigned cclk) { param

STM32F4XX IAP跳转到app uCOSIII上卡死的问题

旧街凉风 提交于 2020-02-21 22:34:55
最近在搞一个SD卡的IAP升级,首先弄了个bootloader,再写一个APP,他们必须存储在不同的FLASH地址里,这里我就不讲了,关于IAP升级的方法网上很多,我说下我做这个时遇到的问题 单个的Bootloader 和APP在地址0x800000上运行的时候都是OK的,且Bootloader + app(无uCOSIII系统),运行也是没有问题的;但是但Bootloader + app(有uCOSIII系统)时就卡死了。调试发现卡死分别在两个地方: 1、卡死在printf()函数打印,也初始化了串口函数; 2、卡死在OSStart(&err);进入不了线程; 网上查了很多关于STM32 Bootloader + app(有uCOSIII系统)卡死的问题,大都的方法都是关中断,指定app中断向量表。 void iap_load_app(void) { uint8_t i; __set_PRIMASK(1); __set_BASEPRI(0); __set_FAULTMASK(0); __set_PSP(*(volatile uint32_t*)USER_FLASH_FIRST_PAGE_ADDRESS); __set_MSP(*(volatile uint32_t*)USER_FLASH_FIRST_PAGE_ADDRESS); __set_CONTROL(0); if(((*

台灯改造【智能台灯】

柔情痞子 提交于 2020-02-15 19:17:16
   2020年春节,由于受疫情的限制,另外博主也是疫情的重灾区-湖北省襄阳市,一方面响应国家的号召“在家不论跑就是最大的贡献”,另一方也是在家闲不住,于是又准备捣鼓捣鼓前两年改造的台灯,前两年在家改造的台灯,改造完后就去上学去了,今年回来,经爸妈的反馈,在实际使用过程中,还是不好用,但之前的程序没有存档,于是乎,又重新列出了,台灯的几个功能: 1、台灯分两个功能模式:自动模式和手动模式; 2、自动模式----白天自动熄灯;晚上检测到人体后开灯,若人体在一定时间内移动,则灯一直开灯不熄灭,当超过一定时间后,人体不移动或未检测到人体,则灯自动熄灭;---这一场景功能主要是方便晚上起夜上厕所;灯的亮度可调目前分为10个级别;-------这一场景功能主要是晚上上突然开启强光,眼睛会花眼; 3、自动模式----定时时间可调,分为2min,3min,4min,5min四中定时时间可调整; 4、手动模式---手动模式不论是白天还是黑夜都可以开启灯光,切灯光亮度可调10个亮度等级;------这一场景功能主要应用是有时白天需要使用台灯,或晚上看书或做别的事情,若灯光太亮,可以手动调节; 5、双电源自动切换----平时台灯插电,台灯使用的时电源适配器的供电,当出现停电状况,自动切换到锂电池供电;-----这一场景功能主要是我这边有时会停电,家里很不方便,自己也有好多18650电池,正好利用起来;

广告形式

[亡魂溺海] 提交于 2020-02-09 10:04:59
引用: http://www.cnblogs.com/zhengyun_ustc/archive/2011/07/13/2104826.html 第一类广告——CPM是按照每千人浏览计费的,现在门户网站等 还在用这种模式; 第二类广告——CPC,按用户点击计费,百度推广,竞价排名后的实际点击干得就是这档子事,竞价积分就是通过改变绝对和相对位置使愿意出 高价钱的公司或个人可以买到用户的点击(流量),流量到现金的转化能力的提升是运营需要关注的; 第三类广告——CPA,按照用户的实际行为付费,比如赶集 网的PPC(电话商机),赶集网提供对外号码给出资人,出资人需要向账户内充钱,当用户拨打号码后,赶集网系统会进行呼叫转移,同时系统开始录音。每一个 有效电话(完成交易)的基本价格是5元,当然有些频道可以炒到700元以上。 引用: http://zhidao.baidu.com/question/311045088.html IAP,英文全称In-App Purchase,是指在iPhone App(苹果应用商店)中出现的“软件内付费内容”。IAP的特点如下: IAP使得用户无需离开软件,便可无缝升级软件功能或扩充内容。 IAP支持付费后下载,所以可以有效的防止盗版。 开发者无需额外推出试玩版本游戏,直接在免费版本中加入IAP,允许用户付费升级即可,节约开发成本。

STM32F103ZET6 - USB_HID -2 (IAP升级)

╄→гoц情女王★ 提交于 2020-01-29 01:17:35
* STM32F103ZET6 - USB_HID -2 (IAP升级) 前言: 记录下碰到的坑!! HID升级完成后, 有查看0X0801 0000 Memory内容,和bin文件是相同的; 按键触发跳转至APP, STM32正点原子精英版上的LED只亮后就死掉; 将连接电脑的USB断开后能正常跳转. ------------ 说明USB有干扰,在跳转前加入了关闭USB功能后,正常跳转; USBD_Stop(&hUsbDeviceFS);// 重点: 此处需关闭USB功能, 需要时再打开. 示例详解: (参考 : https://blog.csdn.net/u014803614/article/details/100033217) 基于硬件平台: STM32F103ZET6正点原子的精英板, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 STM32CubeMX生成代码过程如下: 1>. 打开SWD - debug调试模式, STM32CubeMX生成的代码默认是没打开debug调试模式的 2>. 外部时钟配置, HSE选择为外部晶振 3>. CLOCK Configuration 配置如下: 选择HSE,PLL倍频为9, USB分频为1.5=48M 4>. USB功能选中 5>. USB_DEVICE --> 选择HID功能 .

stm32实现iap远程固件更新

自古美人都是妖i 提交于 2019-12-29 11:25:51
前提 想来做iap升级了,应该不是什么新手。 下面的程序需要用到一些简单的功能 串口收发数据 开关总中断 虽然本文标题是实现远程固件更新,但是具体远程方案本文不做详细说明,重点在于介绍mcu接收到新的固件后怎么保存更新,以及更新失败回滚等。下面简单说明一下远程的事情。 stm32的通信方式有串口,spi,iic,以及sdio等。也就是说我们的固件可以通过这些方式传输到mcu,不过普遍常用的是串口或者用sdio(外接sd卡)这两种方式。个人觉得用sd卡来回copy也不怎么方便。简单点还是再加一个串口网络模块,然后把固件存到服务器,经由串口网络模块透传到mcu。比如用http协议把固件发送下来。远程下载就这么简单一说。接下来重点分析更新的事情。 固件生成 远程更新使用的固件和我们平时烧录程序用的固件格式有点区别,我们需要用二进制格式(.bin)文件。生成方式以mdk为例介绍一下,只需要添加一条命令行。 在mdk工程配置选项选择User,这个页面是让我们添加自定义命令行的,我们要添加的命令添加到第三个选项,即在编译完成后执行。下面是命令内容,需要注意的是 bin前面两个-,app1.bin就是生成的固件,名字可以自定义,**.axf是你工程实际的.axf文件,路径要正确。不知道你的axf在那在output页面查看。 fromelf.exe --bin -o ../app1.bin ./*

一个iOS应用内购买模块的开发

笑着哭i 提交于 2019-12-09 10:02:53
模块设计 或许觉得功能不难,给我的需求就简单几句话。在编码之前我想弄清楚自己开发的模块是怎么样的,该怎么与外界交互。我要找到个工具将这点弄明白,于是想到画UML图。 UML活动图 看 UML建模之活动图介绍(Activity Diagram) 了解了一下,画活动图比较好,感觉这个大概能达到我的目的。于是画了如下两个图,分别表示IAP两个阶段发生的事: 请求商品信息 购买商品 简单介绍 当时了解到的需求是只用提供Web调用的接口,参照 Android 的设计,我以为 本模块只用负责逻辑处理部分,不涉及UI展示 ,所以设计了以上活动图,我的工作主要是 App 部分。后来需求改了。 需求改变 本模块负责IAP所有事项,包括UI展示 本模块需要能被原生App调用 考虑到虚拟币商品的固定性,简化购买过程 虚拟币商品比较固定,展示商品时可以拿本地商品信息展示,而不用等到App Store返回商品信息 将请求商品信息与购买商品合并到“确定支付”过程中 UML时序图 需求更改后活动图有变化,可第一版代码编写后,模块与外界的交互已经比较好理解,我就没再上新图了。我用另外一种图确定了模块内的设计。顺便学习一下 时序图 简单介绍 调用者 ViewController :这里是App原生调用代码。考虑到易嵌入性,我这次放弃使用代理方式,而选择了 Block 作为反馈处理。但愿代码中没有出现 Cycle

什么是IAP?如何实现IAP?

谁都会走 提交于 2019-12-03 13:20:53
发布时间:2008-09-01 来源:computer00 分享到: IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作: 1)检查是否需要对第二部分代码进行更新 2)如果不需要更新则转到4) 3)执行更新操作 4)跳转到第二部分代码执行 第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。 对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,通常会安排第一部分代码处于Flash的开始区域,而第二部分代码紧随其后。 在第二部分代码开始执行时

Testing Android IAP/In-App Purchase Subscriptions

匿名 (未验证) 提交于 2019-12-03 02:06:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I am implementing several Android applications to be launched on Google Play and they all have subscriptions using the Google IAP auto-renewing subscription product type. To test the app I have done the following: Uploaded a draft binary to Google Play but not published it. Created and published the Subscription product in the developer console. Added my Google account to the list of test accounts in the developer console Exported my APK from eclipse (with the same package name and version name/code as the one uploaded to Google

How to test IAP (in-app purchase) in iOS Simulator OR on the Device?

匿名 (未验证) 提交于 2019-12-03 02:00:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I've implemented a simple non-consumable in-app purchase mechanism by following the Ray Wenderlich tutorial book. When my app starts, I initiate a product info request: self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]; _productsRequest.delegate = self; [_productsRequest start]; The SKProductRequest gets created. It has a memory address but nothing else happens. None of the delegate methods gets called: - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *