豹哥嵌入式讲堂:ARM Cortex-M开发之文件详解(6)- 可执行文件(.out/.elf)


于网上检索了片上,一直没有找到比较起说服力的AR集五福的辨析和,抛砖引玉,欢迎大家来讨论!

  大家吓,我是豹哥,猎豹的金钱豹,犀利哥的兄长。今天豹哥吃大家讲讲的凡嵌入式开发里之executable文件(elf)

付出宝AR集五福的韬略意图是啊?

  第四、五节课里,豹哥已经让大家介绍了2栽output文件,本文继续吃大家称project生成的其他一样种output文件-executable文件,也是特地要的output文件。

假定说2016年开发宝集五福,强行要求用户互加好友,是为实现阿里底交际野心,那么今年的集五福,好像看不生有啊特别明白的作用,难道真的只是像支付宝官方说的那样:“把欠的敬业福还受大家”这么简单也?这个名为是阿里“贺岁片”的AR集五福难道真的仅是一个“道歉仪式”吗?如果如此看,只能说好“Too
young, too simple, sometimes
naive”,被阿里运营的门面炮弹加烟雾弹被炸晕了。

  文件涉及:linker文件

开过运营的同班也许只要说自是要是兑现拉新、促活、留存目标啊,这几乎上支付宝的打开率和使用时长不明白凡是平日的微倍哩,多高的功绩!从当下底刷屏热度来拘禁,这话题流量确实赚得盆满钵溢。但热闹只是表面的,仅仅为刷存在谢而因噎废食,这不科学。拉新、促活、留存只是于战略目标中衍生出来的KPI,KPI背后的韬略意图,才是咱今天掏的重点。在连续向下看之前,请您想起一下:集五福的流量都沉淀到乌了?

  • project文件 +
    relocatable文件 ->
    executable文件

流量分配就如一个店之财务报表,能反映出店在该等的战略重点。让咱本着流量即时漫长线索分析一下,看看支付宝意欲何为?支付宝为2亿红包做噱头,以春节集福送福呢导火索,吃瓜群众蜂拥而上,贡献了汪洋底流量。通过种树及打,集福的绝大多数流量被唤起至了蚂蚁森林(有部分被唤起至了线下大型购物市场),而蚂蚁森林的流量又进一步转化成为了走开(通过支付宝支付和捐步获得森林能),移动开被使频率高的当属线下出。

  仔细看过豹哥之前课程的冤家一定知道,豹哥在第四节课relocatable文件里介绍的object文件在格式上实际和本文要提的elf文件是看似的,它们都属于ELF文件分支。只不是relocatable文件只是中档过渡文件,而本文要谈的elf却是正规的output文件,这个文件几乎涵盖了工的兼具消息,有了这文件我们既是好在线调试工程,也得用elf文件转换成为image文件,直接下载image文件数据上芯片中脱机运行。今天豹哥就是吧大家精心分析elf文件。

引流到线下大型商场

同样、elf文件基础

  ELF全称Executable and Linkable
Format,可实行连接格式,ELF格式的公文最早用于存储Linux程序,后演变到ARM系统及存储ARM程序。ELF文件(目标文件)格式主要三栽:

  • 但是重定向文件:用来和其他的目标文件并来创造一个可执行文件或者共享目标文件(也称object文件要静态库文件,通常后缀为.o和.a的文件)。这个文件是用于编译和链接阶段。
  • 可执行文件:用于转移应用image,载入存储器执行(后缀通常为.out或者.elf)。这个文件是用来加载执行等。
  • 共享目标文件:用于和外共享目标文件或者object文件并变可执行文件,或者跟可执行文件一起创造以image。(也称并享库文件,后缀为.so的文本)。这个文件既可是用于编译和链接阶段,也只是用以加载执行阶段。

  我们以ARM开发中另行多点的是前面片种植格式,第一种格式前面系列文章relocatable文件曾经介绍了,本文的中坚是亚种植格式-可执行文件。不管是啊种格式的ELF文件,其都或带有如下三种植基本索引表:

  • file header:一般在文件之开,描述了ELF文件的整组织状况。
  • program
    header
    :告诉系统如何创造image,可执行文件必须怀有program
    header,而而重定向文件则免待。
  • section
    header
    :包含了叙文件section的音讯,每个section都有一个header,每一个header给起诸如section名称、section大小等消息。可重定向文件要包含section
    header。

  既然知道了是三种植索引表,那么表的结构定义在哪啊?github上的linux仓库里出切实可行定义,在elf.h头文件里。

Linux仓库:https://github.com/torvalds/linux.git
elf.h路径:\linux\include\uapi\linux\elf.h

  打开elf.h文件就只是找到三个说明底原型定义,鉴于目前的ARM
Cortex-M都是32bit,所以这边就排有32bit产之发明底原型:Elf32_Ehdr、Elf32_Phdr、Elf32_Shdr。

// file header
#define EI_NIDENT    16
typedef struct elf32_hdr{
  unsigned char e_ident[EI_NIDENT];     /* Magic number and other info */
  Elf32_Half    e_type;                 /* Object file type */  
  Elf32_Half    e_machine;              /* Architecture */  
  Elf32_Word    e_version;              /* Object file version */  
  Elf32_Addr    e_entry;                /* Entry point virtual address */  
  Elf32_Off     e_phoff;                /* Program header table file offset */  
  Elf32_Off     e_shoff;                /* Section header table file offset */  
  Elf32_Word    e_flags;                /* Processor-specific flags */  
  Elf32_Half    e_ehsize;               /* ELF header size in bytes */  
  Elf32_Half    e_phentsize;            /* Program header table entry size */  
  Elf32_Half    e_phnum;                /* Program header table entry count */  
  Elf32_Half    e_shentsize;            /* Section header table entry size */  
  Elf32_Half    e_shnum;                /* Section header table entry count */  
  Elf32_Half    e_shstrndx;             /* Section header string table index */ 
} Elf32_Ehdr;

// program header
typedef struct elf32_phdr{
  Elf32_Word    p_type;           /* Segment type */
  Elf32_Off     p_offset;         /* Segment file offset */
  Elf32_Addr    p_vaddr;          /* Segment virtual address */
  Elf32_Addr    p_paddr;          /* Segment physical address */
  Elf32_Word    p_filesz;         /* Segment size in file */
  Elf32_Word    p_memsz;          /* Segment size in memory */
  Elf32_Word    p_flags;          /* Segment flags */
  Elf32_Word    p_align;          /* Segment alignment, file & memory */
} Elf32_Phdr;

// section header
typedef struct elf32_shdr {
  Elf32_Word    sh_name;          /* Section name, index in string tbl */
  Elf32_Word    sh_type;          /* Type of section */
  Elf32_Word    sh_flags;         /* Miscellaneous section attributes */
  Elf32_Addr    sh_addr;          /* Section virtual addr at execution */
  Elf32_Off     sh_offset;        /* Section file offset */
  Elf32_Word    sh_size;          /* Size of section in bytes */
  Elf32_Word    sh_link;          /* Index of another section */
  Elf32_Word    sh_info;          /* Additional section information */
  Elf32_Word    sh_addralign;     /* Section alignment */
  Elf32_Word    sh_entsize;       /* Entry size if section holds table */
} Elf32_Shdr;

由此种树、浇水引流到蚂蚁森林

二、解析elf文件

  所谓工欲善其事,必先利其器,在始发解析elf文件前,我们须事先找到同样缓慢合适的分析工具,readelf就是GNU/Linux官方推出的专用解析工具。有了之分析工具,我们尽管得以逐步分析elf文件。

蚂蚁森林于集福活动中的页面入口

2.1 解析工具readelf

  既然elf文件是Linux系统下常用底可执行文件格式,那么Linux社区一定会出配套的家伙去分析其,是的,这个家伙就是让readelf,在GNU工具集binutils里。

起蚂蚁森林引流到丝下开发

2.1.1 GNU工具集(binutils)

  GNU是“GNU’s Not
Unix”的递归缩写,又称之为GNU计划,很多显赫的开源软件以及工具还是GNU开发之(比如名的C语言编译器GCC)。binutils是GNU一系列binary小器的集结,大家从下的链接里找到官方binutils包。

主页:http://www.gnu.org/software/binutils/
仓库:git://sourceware.org/git/binutils-gdb.git
下载:http://ftp.gnu.org/gnu/binutils/
文档:https://sourceware.org/binutils/docs-2.29/binutils/index.html

  但是以上述包里之readelf会有一个题目,上述工具是以Linux系统下下的,而大家平常做ARM
Cortex-M开发多且是当windows平台下,那么怎么当windows下行使readelf工具为?别急,cygwin给了咱帮。

缕清集福活动之流量走向,再联系支付宝2016年中秋节的AR扫月亮与前段时间的AR扫红包活动,我们有充分的说辞推断出这般的结论:支付宝在用平等文山会海之游戏化运营策略教育AR市场,培育用户,与腾讯争夺线下开入口。

2.1.2 cygwin(windows下使用GNU)

  Cygwin是一个于windows平台上运行的类UNIX模拟条件,是cygnus
solutions公司(已让Redhat收购)开发的自由软件。它对于学习UNIX/Linux操作环境,或者由UNIX到Windows的应用程序移植,尤其是行使GNU工具集在Windows上展开嵌入式系统出,非常有效。

// 下载链接
Installer:http://cygwin.com/install.html
Package:  https://cygwin.com/packages/package_list.html
// 相关包(根据平台选择)
binutils                - GNU assembler, linker, and similar utilities
cygwin32-binutils       - Binutils for Cygwin 32bit toolchain
mingw64-x86_64-binutils - Binutils for MinGW-w64 Win64 toolchain 
mingw64-i686-binutils   - Binutils for MinGW-w64 Win32 toolchain

  下载安装好cygwin包后,便只是当设置目录下\cygwin64\bin\找到x86_64-w64-mingw32-readelf.exe工具(豹哥选择的是mingw64-x86_64-binutils包)。

拿AR和线下支付联系起来,是勿是不过牵强附会了?听自己慢慢道来。互联网的庐山真面目是把万物信息化并贯彻人与物的双向链接,目前,腾讯实现了人口以及人口的链接,阿里举行了口同商品的链接,百度完成了总人口跟信之链接,但物和人口之链接还有众多空手领域,比如你见到市场里生一个颇突出的杯子,如何高效地将此杯子电子化,以可读之多媒体信息呈现,为协调提供决策依据,而非用像个运动的“十万独为什么”一样赶着卖场小妹问个不停止吗?各互联网巨头正力图落实此目标,让祥和化链接一切的那个人。张小龙曾预言二维码才是前景链接一切的进口,并盛产小程序救助他促成就等同不错,而阿里虽然将链接一切的入口赌在了AR上,通过AR实现人口跟周围世界之相互,把东西电子化、信息化、互联网化。

2.1.3 readelf.exe用法

  readelf.exe以标准的windows命令行用法,使用–help可以列出所有命令option及其简介,下面仅排有比常用的option。

C:\cygwin64\bin>x86_64-w64-mingw32-readelf.exe --help
Usage: readelf <option(s)> elf-file(s)
 Display information about the contents of ELF format files
 Options are:
  -a --all               Equivalent to: -h -l -S -s -r -d -V -A -I
  -h --file-header       Display the ELF file header
  -l --program-headers   Display the program headers
     --segments          An alias for --program-headers
  -S --section-headers   Display the sections' header
     --sections          An alias for --section-headers
  -t --section-details   Display the section details
  -e --headers           Equivalent to: -h -l -S
  -s --syms              Display the symbol table
     --symbols           An alias for --syms
  --dyn-syms             Display the dynamic symbol table
  -r --relocs            Display the relocations (if present)
  -d --dynamic           Display the dynamic section (if present)
  -V --version-info      Display the version sections (if present)
  -A --arch-specific     Display architecture specific information (if any)
  -I --histogram         Display histogram of bucket list lengths
  @<file>                Read options from <file>

1月20日,以色列经济日报Calcalist报道说,中国之互联网巨头阿里巴巴于以色列加强现实透镜厂商投资了600万美元,加上之前阿里巴巴对Magic
Leap等一律名目繁多AR公司之投资,这多少得作证阿里巴巴正全力将AR技术整合到我们的便行使中来。未来链接一切的沙场在哪,链接的进口是哪位,无法自由断言,但依据去年微信跟支付宝在线下开领域的若什么样我夺来拘禁,这会链接的刀兵必然在线下支付率领域率先推向高潮。

2.2 逐步分析elf文件

  万事俱备了,开始分析elf文件,以第三节课project文件里demo工程为条例。编译链接该工程而当D:\myProject\bsp\builds\demo\Release\Exe路径下得到demo.elf文件。该公文大小32612
bytes,显然这样简单的一个有点工程image
size不容许这样可怜,说明elf文件里之笔录信息数量占比生充分。

支付宝用焉通过AR切入线下开发领域?

2.2.1 获得file header
C:\cygwin64\bin>x86_64-w64-mingw32-readelf.exe -h demo.elf
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0x41
  Start of program headers:          31740 (bytes into file)
  Start of section headers:          31772 (bytes into file)
  Flags:                             0x5000000, Version5 EABI
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         1
  Size of section headers:           40 (bytes)
  Number of section headers:         21
  Section header string table index: 1

  第一步首先分析file header,前面介绍里说了file
header是身处文件最前面的。通过readelf -h命令可以博得file
header解析后底音讯。让咱们来比一下,使用HexEditor直接打开demo.elf可得到如下数据,仅获前52bytes(0x34)数据,因为Elf32_Ehdr大小就是52bytes:

offset(h)
00000000: 7F 45 4C 46 01 01 01 00 00 00 00 00 00 00 00 00
00000010: 02 00 28 00 01 00 00 00 41 00 00 00 FC 7B 00 00
00000020: 1C 7C 00 00 00 00 00 05 34 00 20 00 01 00 28 00
00000030: 15 00 01 00 -- -- -- -- -- -- -- -- -- -- -- --

  可以看前面16byte凡是e_ident[16],与分析后底Magic是均等的;再来证明prgram
header偏移e_phoff=0x00007BFC,数量e_phnum=0x0001,大小e_phentsize=0x0020,也是同分析后底信息相当的;余下可自动对照。

无能够商业化的功力决定无法长期,经过AR扫月亮、扫红包与集福的洗礼,我相信大部分支付宝用户指向AR功能曾不陌生,特别是用春节团圆,一不行批判年轻用户带来年长的用户,更是上打下掘,拓展用户年龄层的最佳时期,用户教育一定成(如果非刻意踩除夕此时间点。把减掉红包的时光转移至正月初七——人的寿辰,不但可行使春节移动亲戚带更多话题与传播,而且节后上班随机抽红包的话题余热还当,传播效果将另行值得期待),如果春节后支付宝切入AR扫优惠券,实现AR功能商业化,相信不见面有人看奇怪和生分,而优惠券到出属于高涉嫌,那么自从AR到线下出的逻辑就是挖掘了。

2.2.2 获得program header
C:\cygwin64\bin>x86_64-w64-mingw32-readelf.exe -l demo.elf

Elf file type is EXEC (Executable file)
Entry point 0x41
There are 1 program headers, starting at offset 31740

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000034 0x00000000 0x00000000 0x004c4 0x004c4 R E 0x100

 Section to Segment mapping:
  Segment Sections...
   00     A0 rw P1 ro

  再来分析program header,通过readelf -l命令可以获取program
header解析后的音信。从地方可以摸清header起始位置在demo.elf的31740
byte处(与file header里的e_phoff信息是相应之),header信息提示program
data从offset 0x34初始,大小共0x4c4
bytes,Reset_Handler入口是0x41。继续于HexEditor查看31740处在起的32byte数据,因为Elf32_Phdr大小就32bytes:

offset(h)
00007BF0: -- -- -- -- -- -- -- -- -- -- -- -- 01 00 00 00
00007C00: 34 00 00 00 00 00 00 00 00 00 00 00 C4 04 00 00
00007C10: C4 04 00 00 05 00 00 00 00 01 00 00 -- -- -- --

  可以看出p_offset=0x00000034,p_memsz=0x000004c4,
与方解析后的音信是千篇一律的;余下可自动对照。
这里的信息就比较关键了,因为马上指示了总体image
binary数据所在(知道了此信息,我们就算好直接写脚论根据elf文件生成image
binary),继续在HexEditor里看下(仅截取部分显得):

offset(h)
00000030: -- -- -- -- 00 20 00 10 41 00 00 00 03 04 00 00
00000040: 3F 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000060: 61 04 00 00 00 00 00 00 00 00 00 00 63 04 00 00
00000070: 65 04 00 00 72 B6 0E 48 0E 49 88 60 00 22 00 23
00000080: 00 24 00 25 00 26 00 27 B8 46 B9 46 BA 46 BB 46

  ARM系统的image前16只指针都是系中断向量,我们得以看到SP=0x10002000,
PC=0x00000041,这跟地方解析的Reset_Handler入口是0x41凡相当的。

逻辑虽然开了,但到底要怎么促成啊?AR扫月亮、找红包、集五福和AR优惠券之间有什么关联啊?

2.2.3 获得section header
c:\cygwin64\bin>x86_64-w64-mingw32-readelf.exe -S demo.elf
There are 21 section headers, starting at offset 0x7c1c:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 006338 000000 00      0   0  4
  [ 1] .shstrtab         STRTAB          00000000 006338 0000e6 00      0   0  4
  [ 2] .strtab           STRTAB          00000000 006420 000b7c 00      0   0  4
  [ 3] .symtab           SYMTAB          00000000 006f9c 000c60 10      2 135  4
  [ 4] A0 rw             PROGBITS        00000000 000034 000040 01  AX  0   0 256
  [ 5] P1 ro             PROGBITS        00000040 000074 000484 01  AX  0   0  4
  [ 6] P3 ui             NOBITS          10000000 0004f8 002000 01  WA  0   0  8
  [ 7] P2 rw             NOBITS          10002000 0004f8 000438 01  WA  0   0  8
  [ 8] .debug_abbrev     PROGBITS        00000000 0004f8 0002c6 01      0   0  0
  [ 9] .debug_aranges    PROGBITS        00000000 0007c0 00016c 01      0   0  0
  [10] .debug_frame      PROGBITS        00000000 00092c 00057c 01      0   0  0
  [11] .debug_info       PROGBITS        00000000 000ea8 000e2e 01      0   0  0
  [12] .debug_line       PROGBITS        00000000 001cd8 000dcb 01      0   0  0
  [13] .debug_loc        PROGBITS        00000000 002aa4 00024c 01      0   0  0
  [14] .debug_macinfo    PROGBITS        00000000 002cf0 00011e 01      0   0  0
  [15] .debug_pubnames   PROGBITS        00000000 002e10 00012a 01      0   0  0
  [16] .iar.debug_frame  PROGBITS        00000000 002f3c 00007e 01      0   0  0
  [17] .iar.debug_line   PROGBITS        00000000 002fbc 000367 01      0   0  0
  [18] .comment          PROGBITS        00000000 003324 002fa2 01      0   0  0
  [19] .iar.rtmodel      PROGBITS        00000000 0062c8 000047 01      0   0  0
  [20] .ARM.attributes   ARM_ATTRIBUTES  00000000 006310 000026 01      0   0  0
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  y (purecode), p (processor specific)

  再来分析section header,通过readelf -S命令可以取得section
header解析后的消息。可以观看出许多单section,其中最重点之4只section是A0(readonly
vector), P1(readonly code,data), P2(readwrite data, heap),
P3(STACK)。具体分析,各位朋友自己尝试看。

事实上,优惠券作为一如既往慢营销利器,其设计极端为难之地方不是优惠券的平整设定,优惠券的施用和结算,而是优惠券的发放,如何为优惠券快速有效地到用户只要未打搅用户,这才是优惠券设计之难点。利用AR技术,有望改善优惠券的发放痛点,特别是线下优惠券发放之痛点。(优惠券的留存痛点是一个于坏之话题,暂不进行,而且每个人都接触过优惠券,留给大家去感受,改天有工夫独自写一首一起探索。)我们先行来探视AR在优惠券发放方面能够生哪作为。

2.2.4 获得symbol list
c:cygwin64\bin>x86_64-w64-mingw32-readelf.exe -s demo.elf

Symbol table '.symtab' contains 198 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
    74: 10002018    16 OBJECT  LOCAL  DEFAULT    7 s_array
    75: 10002014     4 OBJECT  LOCAL  DEFAULT    7 s_variable0
    76: 10002010     4 OBJECT  LOCAL  DEFAULT    7 s_variable2
   135: 00000000     0 OBJECT  GLOBAL DEFAULT    4 __vector_table
   140: 00000041     0 FUNC    GLOBAL DEFAULT    5 Reset_Handler
   141: 00000098     4 OBJECT  GLOBAL DEFAULT    5 s_constant
   142: 000000ad    32 FUNC    GLOBAL DEFAULT    5 main
   143: 000000cd    14 FUNC    GLOBAL DEFAULT    5 normal_task
   144: 000000db    60 FUNC    GLOBAL DEFAULT    5 heap_task
   155: 0000034d    84 FUNC    GLOBAL DEFAULT    5 init_data_bss
   156: 000003a1    18 FUNC    GLOBAL DEFAULT    5 init_interrupts
   157: 000003dd    12 FUNC    GLOBAL DEFAULT    5 SystemInit
   186: 10002001    16 FUNC    GLOBAL DEFAULT    7 ram_task
   191: 10002034     4 OBJECT  GLOBAL DEFAULT    7 n_variable1

  通过readelf -s命令可以取得symbol
list解析后底信息。可以看出有好多独symbol,豹哥在此只有排有利用工程里由定义之函数和变量,从symbol表里我们得以查出函数/变量在存储器中现实分配地址及尺寸,这对于我们更是分析以及调节应用是发帮扶的。

联想一下AR扫月亮、扫红包、扫福集福,AR扫优惠券的功用就是呼的需出了。其实在集福的进程被,我们曾经看到了优惠券的影,在每张福卡的阴,都起或藏在平等摆设优惠券,别嫌弃这里的优惠券广告目的大于优惠本质,因为广告也是优惠券的效应之一。所以,这次集五福活动或只是AR优惠券的预告片,好打还当后。

2.3 elf文件layout

  经过上同节省对demo.elf里相继header的辨析,此时我们就是足以简简单单地打出elf文件layout。

File offset Data content Data size in bytes
0x00000000 ELF file header 52
0x00000034 Image binary (Section4-A0 rw, .intvec中断向量表) 0x40
0x00000074 Image binary (Section5-P1 ro, readonly section(.text, .rodata…)) 0x484
0x000004F8 Section8-20 (包含各种辅助调试和系统段.debug_xx, .iar.xx) 0x5E3E
0x00006336 NULL 0x2
0x00006338 Section1-.shstrtab字符串表 0xE6
0x00006420 Section2-.strtab字符串信息 0xB7C
0x00006F9C Section3-.symtab符号信息 0xC60
0x00007BFC ELF Program header 0x20
0x00007C1C ELF Section headers (0 – 20) 21 * 40

福卡背面的优惠券

番外一、几个elf转换image工具

  以今的海外篇里,豹哥为大家顺便介绍几缓慢专业的elf文件转换成为image文件的家伙。

将场景换到餐厅,把藏红包换成商家藏优惠券,把拆红包换成扫菜单上的某某平等鸣菜肴之图纸领优惠券,我们来运动相同全勤就是餐流程。

工具1:GNU工具objcopy

位置:C:\cygwin64\bin>x86_64-w64-mingw32-objcopy.exe
用法:
      objcopy.exe -O binary -S demo.elf demo.bin
      objcopy.exe -O srec   -S demo.elf demo.s19

备注:一说需用arm-linux-objcopy,待验证

周日闲来无事,小明九点才好,拉开窗帘一看,哎哟,天气对,何不约上三五密友去爬爬山,爬至山头再由打牌、写写诗文。事不宜迟,来同样会说走就走的登山吧,于是把几乎单假设好之情侣约至了蔡塘广场,先吃等同间断,吃饱了才起力气爬山嘛。走上前同寒闽南饭庄,小明为未虚心,拿了菜单浏览了四起,东璧龙珠这道菜肴之名够霸气,图片看在吧不利,图片下方还有“支付宝AR优惠券”的提拔,掏出手机,打开支付宝一扫。打开了就道菜在贺词及之详情页,不仅介绍了马上道菜之材料以及做法,还有小人口接触了、用户评价顶数码,下才按钮上有一行提示:下单即可领取10最先优惠券,果断下单。如此这般,又点了几个菜,每道菜都受了一致摆放优惠券,餐后结算,已自行扣除刚才领的优惠券金额。期间退了千篇一律道菜,对应之那张优惠券就失效,但无影响其它菜的优惠券的利用,一点还毫不担心。

工具2:IAR工具ielftool.exe

位置:\IAR Systems\Embedded Workbench xxx\arm\bin\ielftool.exe
用法:
      ielftool.exe --bin  demo.elf demo.bin
      ielftool.exe --ihex demo.elf demo.hex
      ielftool.exe --srec demo.elf demo.s19

  至此,嵌入式开发里的executable文件(elf)文件豹哥就介绍完了,掌声在哪~~~

产生了餐厅大伙就刚刚的动体验讨论了起来。

狐朋曰:支付宝AR优惠券一起,优惠券发放由企业推送变用户主动领取,即扫即领即用,不收受无用券,不打扰用户,体验顺溜得异常,不仅将开宝卡包和口碑都装备了四起,微信卡包瞬间弱爆。

狗友曰:我看惨的免是微信卡包,而是美团。现在底美团团购有非常充分一部分凡至店团购。很多人无适应先团购,再到团购的旅舍花这样的模式,不是以太low,显得掉价,而是不便于,限制行程,想去的地方是A,团购的旅社也于B,这个控制比卸360尚是QQ还艰难。有深可怜有用户懒得去摸什么样店有团购,都是直接去爱上的旅馆,结算的时段顺便问一下是不是好团购?如果不行,直接支付宝还是微信支付,走人;如果得以,则打开美团,花85首购置张100之抵用券,结款走人。支付宝如果实现把优惠券精细到每道菜,扫菜单就提优惠券,而无需多有一个团购流程,不仅是优惠券发放之平等生进步,也拿凡精准营销之一模一样良发展,前途不可限量,一直没什么新效能的美团、糯米等团购APP可能让支付宝的一个意义颠覆,口碑翻身,阿里线下开发地位越发牢固。

土葡京在线开户貉曰:何止是餐饮业,只要付出宝别玩假AR,不再管“傻”当做“福”,它以颠覆整个优惠券的关,任何一个供销社还可以使用支付宝的AR功能,实现优惠券的低碳发放,带来任何优惠券市场之兴旺。小区便利店、街边夫妻店、沙县小吃店,这些从没犯了优惠券的周边小老板们将活动及亦然漫漫新的营销大道。

亲手写一个“傻”字,被辨认为“福”,这是一个假AR

哭笑不得曰:支付宝明明是想阻击微信的,关美团什么事?

损友曰:两巨额人比武,最后巨人没事,生灵涂炭。这为吃流弹误伤,消灭你拉你呀事。小明向最为有主意了,不上点儿句子?

小明曰:我们等下玩斗地主或80分?

异口同声地称之为:80细分。

一行人浩浩荡荡向忠仑公园山顶行去,再无题外话。

支付宝到底以遍布什么店铺?总结起来就是同一句话:支付宝通过AR扫月亮、找红包、集五福验证技术、培育市场,待技术以及商海成熟后切入AR优惠券,由AR优惠券占领线下出高地。到了互联网下半场,重心将再也回到线下,支付宝作为公民支付工具,自然非会见放过线下支付这块老蛋糕,至于是勿是起AR优惠券这个角度切入,让咱拭目以待。