OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 3595|回复: 35

二维码开源库ZBar STM32F429 移植

[复制链接]

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
发表于 2018-2-22 09:29:22 | 显示全部楼层 |阅读模式
正点原子公众号
源码工程如附件。
移植过程,参考http://www.cnblogs.com/greyorbit

ZBar_STM32F4.zip

884.44 KB, 下载次数: 572

ZBar STM32F429

回复

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-2-22 23:05:05 | 显示全部楼层
消灭零回复。

ZBar是一个开源的条码和二维码解码库,网上那些打包成库的二维码解析库,大多都是这个东西。

顺便说下网上其他人移植到STM32F4的常见问题:
1:内存问题,表现为直接挂掉或者解析出来的数据少了一截
原因:STM32F4默认的启动文件对堆和栈的设置太过死板,导致默认的堆的大小设置不够
该移植版本使用ISO C库,直接使用C库的malloc,而且把未使用内存全部分配给堆,无需手动设置堆的大小
2:中文乱码问题
该移植版本,支持直接中文输出


回复 支持 反对

使用道具 举报

  离线 

72

主题

2720

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3420
金钱
3420
注册时间
2014-8-4
在线时间
660 小时
发表于 2018-2-23 10:06:17 | 显示全部楼层
谢谢分享.....
回复 支持 反对

使用道具 举报

  离线 

50

主题

1453

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2400
金钱
2400
注册时间
2011-1-25
在线时间
123 小时
发表于 2018-2-23 10:34:35 | 显示全部楼层
厉害厉害,谢谢分享
一直努力就很好。
回复 支持 反对

使用道具 举报

  离线 

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2016-10-21
在线时间
49 小时
发表于 2018-2-23 13:03:37 | 显示全部楼层
正点原子公众号
本帖最后由 taoriran 于 2018-2-23 13:06 编辑

非常感谢共享!!
编译出错!
Snap1.jpg
回复 支持 反对

使用道具 举报

  离线 

57

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1300
金钱
1300
注册时间
2016-1-7
在线时间
279 小时
发表于 2018-2-23 13:06:59 | 显示全部楼层
感谢分享!
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-2-23 13:50:55 | 显示全部楼层
taoriran 发表于 2018-2-23 13:03
非常感谢共享!!
编译出错!

不小心删掉了ZBar.sct,你自己加上,内容如下,放在Output文件下
LR_IROM1 0x08000000 0x00100000  {    ; load region size_region
    ER_IROM1 0x08000000 0x00100000  {  ; load address = execution address
    *.o (RESET, +First)
    *(InRoot$$Sections)
    .ANY (+RO)
    }
   

    RW_IRAM_DATA 0x20000000 0x00030000 {  ; RW data
    .ANY (+RW +ZI)
    }
   
   
    ARM_LIB_STACK 0x20030000 EMPTY -(0x20030000 - ImageLimit(RW_IRAM_DATA))  ; Stack region growing down
    { }
   
   
    RW_ERAM 0xD0000000 0x00800000 { ;Extern SDRAM
    main.o(+RW +ZI)
    }
   
    ARM_LIB_HEAP +0 EMPTY  (0xD0800000 - ImageLimit(RW_ERAM)) ; Heap region growing up
    { }
}
回复 支持 反对

使用道具 举报

  离线 

499

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
129612
金钱
129612
注册时间
2010-12-1
在线时间
1163 小时
发表于 2018-2-25 02:17:48 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2016-10-21
在线时间
49 小时
发表于 2018-2-25 10:01:16 | 显示全部楼层
已编译成功,非常感谢!!
回复 支持 反对

使用道具 举报

  离线 

7

主题

177

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2314
金钱
2314
注册时间
2015-12-27
在线时间
410 小时
发表于 2018-2-25 11:00:18 | 显示全部楼层
这个可以用来生成二维码吗?
回复 支持 反对

使用道具 举报

  离线 

0

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-2-14
在线时间
6 小时
发表于 2018-2-25 11:50:45 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-2-11
在线时间
20 小时
发表于 2018-2-26 20:49:40 | 显示全部楼层
谢谢分享。已经编译成功。
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-2-27 10:52:33 | 显示全部楼层
钩月黄昏 发表于 2018-2-25 11:00
这个可以用来生成二维码吗?

不能,只能解码,不编码
回复 支持 反对

使用道具 举报

  离线 

1

主题

2

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2017-8-9
在线时间
17 小时
发表于 2018-2-28 14:09:08 | 显示全部楼层
请问下只能用F429,不能用F407吗?
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-2-28 16:44:32 | 显示全部楼层
日落不眠 发表于 2018-2-28 14:09
请问下只能用F429,不能用F407吗?

工程是F429的工程,ZBar跟平台无关,可以移植到其他平台,只要平台的内存足够,堆的分配需要2M以上。
回复 支持 反对

使用道具 举报

  离线 

10

主题

212

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1041
金钱
1041
注册时间
2016-7-21
在线时间
250 小时
发表于 2018-3-6 16:44:40 | 显示全部楼层
多谢楼主分享
回复 支持 反对

使用道具 举报

  离线 

12

主题

335

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1220
金钱
1220
注册时间
2013-1-11
在线时间
250 小时
发表于 2018-3-6 17:21:38 | 显示全部楼层
谢谢分享.....
知识是你最好的财富
回复 支持 反对

使用道具 举报

  离线 

16

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2016-9-10
在线时间
79 小时
发表于 2018-4-3 16:33:34 | 显示全部楼层
main.c里面那个buf数组是怎么从二维码转换过来的?
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-4-10 11:32:11 | 显示全部楼层
1491430114 发表于 2018-4-3 16:33
main.c里面那个buf数组是怎么从二维码转换过来的?

自己写个小工具转换的。
使用PNG库有读取PNG图片的灰度数据,然后将其转换为数组。
回复 支持 反对

使用道具 举报

  离线 

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-12-22
在线时间
13 小时
发表于 2018-4-16 22:54:10 | 显示全部楼层
Mark一下
回复 支持 反对

使用道具 举报

  离线 

6

主题

487

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1537
金钱
1537
注册时间
2015-5-8
在线时间
255 小时
发表于 2018-4-16 23:06:13 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

1

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2017-5-20
在线时间
44 小时
发表于 2018-4-18 14:56:08 | 显示全部楼层
这个不错,我也试试看。
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-4-20
在线时间
2 小时
发表于 2018-4-20 11:13:32 | 显示全部楼层
greyorbit 发表于 2018-4-10 11:32
自己写个小工具转换的。
使用PNG库有读取PNG图片的灰度数据,然后将其转换为数组。

这个工具能否上传一下,方便用来测试。
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

2

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1146
注册时间
2012-5-8
在线时间
190 小时
发表于 2018-4-28 18:59:12 | 显示全部楼层
赞一个,zbarSTM32F429标记以后会有用
回复 支持 反对

使用道具 举报

  离线 

2

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1146
注册时间
2012-5-8
在线时间
190 小时
发表于 2018-5-14 16:25:58 | 显示全部楼层
这个栈是不是也有溢出的现象
回复 支持 反对

使用道具 举报

  离线 

2

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
金钱
1146
注册时间
2012-5-8
在线时间
190 小时
发表于 2018-5-14 16:30:24 | 显示全部楼层
greyorbit 发表于 2018-2-22 23:05
消灭零回复。

ZBar是一个开源的条码和二维码解码库,网上那些打包成库的二维码解析库,大多都是这个东西 ...

赞一个!谢谢分享!
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-5-20
在线时间
2 小时
发表于 2018-5-20 15:00:15 | 显示全部楼层
為什麼我執行完                                 BLX     R0                  LDR     R0, =__main                  BX      R0就會跳入硬件錯誤,我的是阿波羅F429開發板
回复 支持 反对

使用道具 举报

  离线 

0

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-5-19
在线时间
34 小时
发表于 2018-5-20 23:47:33 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

0

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2018-5-9
在线时间
53 小时
发表于 2018-5-27 17:07:27 | 显示全部楼层
本帖最后由 alexvhozy 于 2018-5-27 17:10 编辑

多谢楼主,已经移植到IMX RT-IAR平台上。

zbar移植到IAR时需要注意以下几点(以IAR 8.22版本为例):

1.工程中添加include path(废话)

2.将IAR的DLIB支持修改为"full",以添加标准库里的文件IO支持(fprintf, FILE指针之类的东西)。

3.打开编译器的C99(C11)支持,并勾选"VLA"(变长数组)支持

4.在General Option-Library Configuration中将DLIB的接口实现选择为"semihosted",以实现标准库里的stdin/stdout/stderr支持。当然,如果工程里有自己实现的_read和_write函数,可以跳过这一步。注意,如果选中了semihosted,则printf之类的标准输入输出流都通过iar自带的terminal进行交互。调试模式下view-terminal可以调出来这个界面。

5.在.icf(链接脚本)中将heap大小设置至少大于2M

6.最重要的一点:设置General Option-Library Configuration2-Heap Selection选项为"Basic Heap"。否则zbar在调用free时可能会直接__exit停机。具体原因自行参考IAR官方的开发手册。


编译,运行,输出结果。
回复 支持 反对

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2013-9-9
在线时间
17 小时
发表于 2018-6-2 18:45:49 | 显示全部楼层
谢谢分享!!
回复 支持 反对

使用道具 举报

  离线 

2

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2018-1-31
在线时间
28 小时
发表于 2018-6-9 10:52:40 | 显示全部楼层
greyorbit 发表于 2018-2-28 16:44
工程是F429的工程,ZBar跟平台无关,可以移植到其他平台,只要平台的内存足够,堆的分配需要2M以上。

没有2M这么夸张。
用了你的例子,在407上测试
128K可以运行。
监控动态申请内存,峰值103K,
其中78.4K是做图片处理,自适应阈值的时候申请。
78.4K相当于你的图片数组大小。

如果要做动态识别,那么还要一张图片的空间,
那估计要200K?

对RAM需求还是太大了。几十块钱的一个单片机,产品用得还是比较少。
回复 支持 反对

使用道具 举报

  离线 

0

主题

8

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-6-9
在线时间
0 小时
发表于 2018-6-9 20:31:35 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-6-12 13:44:43 | 显示全部楼层
屋脊雀 发表于 2018-6-9 10:52
没有2M这么夸张。
用了你的例子,在407上测试
128K可以运行。

刚才试了下,确实不需要2M的堆。
2M堆的结论,是刚开始用默认的启动文件设置测试的(具体不知道啥原因,反正当时用默认启动文件,经测试确实需要2M的堆)。
移植到STM32的原因是为了吐槽某些用了开源代码,打包成库还只字不提用了哪个解码库。

要用大内存,就不要用通用单片机了,用新唐的ARM9,内置2~32M RAM,价格就20RMB不到
回复 支持 反对

使用道具 举报

  离线 

6

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2018-4-18
在线时间
10 小时
发表于 2018-6-19 16:31:52 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

  离线 

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2014-7-23
在线时间
8 小时
发表于 2018-6-30 15:42:09 | 显示全部楼层
greyorbit 发表于 2018-6-12 13:44
刚才试了下,确实不需要2M的堆。
2M堆的结论,是刚开始用默认的启动文件设置测试的(具体不知道啥原因, ...

NUC972吗?价格不到20RMB?
回复 支持 反对

使用道具 举报

  离线 

1

主题

12

帖子

1

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-2-22
在线时间
13 小时
 楼主| 发表于 2018-7-4 10:26:42 | 显示全部楼层
robinyuan 发表于 2018-6-30 15:42
NUC972吗?价格不到20RMB?

N32903
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-17 03:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */