掃碼槍是用來掃描條碼的設(shè)備,俗稱掃碼器、掃描器、掃描槍等。是光學(xué)、機(jī)械、電子、軟件應(yīng)用等技術(shù)
緊密結(jié)合的高科技產(chǎn)品,是鍵盤、鼠標(biāo)之后的主要電腦輸入設(shè)備。從直接的圖片、照片、膠片等圖紙到文稿都可用掃碼槍輸入到計(jì)算機(jī)中,實(shí)現(xiàn)信息處理、管理、使用、儲(chǔ)存或輸出。適用于物流、工廠、碼頭等工作環(huán)境惡劣,且工作負(fù)荷較高的行業(yè)。
i.MX 6ULL系列具有一個(gè)單核Cortex-A7平臺(tái),運(yùn)行頻率最高可達(dá)900 MHz,配備128KB L2緩存和16位DDR3/DDR3L/LPDDR2支持,是一個(gè)高效率、高性價(jià)比應(yīng)用處理器系列。
? i.MX6ULL應(yīng)用處理器方框圖
i.MX 6ULL開發(fā)板的功能電路及接口非常豐富,針對(duì)于掃碼槍,硬件部分我們只需要在上面做減法,保留開發(fā)板方框圖中的黃色部分。
? i.MX6ULL開發(fā)板部分原理圖
? i.MX6ULL開發(fā)板PCB Layout
軟件設(shè)計(jì)說明:
本軟件系統(tǒng)采用的是Linux系統(tǒng),Linux具有開源、快速移植、應(yīng)用廣泛的特點(diǎn),整個(gè)系統(tǒng)包括uboot、Linux Kernel、rootfs。由于將uboot、kernel、rootfs都放在16或32MB SPI Nor Flash中,并且要求快速啟動(dòng),因此軟件設(shè)計(jì)的一個(gè)任務(wù)是要對(duì)Linux系統(tǒng)進(jìn)行裁剪使盡可能小。本章節(jié)主要對(duì)uboot、kernel、rootfs的移植裁剪以及應(yīng)用程序測(cè)試說明。
1、Uboot
uboot是bootloader,主要任務(wù)是初始化ARM、時(shí)鐘、外部DDR3、QSPI Nor Flash等,以及將Kernel從SPI Nor Flash中復(fù)制到DDR3中運(yùn)行引導(dǎo)起來。
i.MX6ULL上電啟動(dòng)過程中首先是執(zhí)行ROM Boot,讀到QSPI啟動(dòng)方式設(shè)置后(硬件電路需先設(shè)置成QSPI啟動(dòng)),先執(zhí)行spiflash中的uboot,為了更快地運(yùn)行uboot,需要對(duì)uboot進(jìn)行移植裁剪,同時(shí)刪除一些不必要的功能。
(1)uboot配置和修改
uboot配置通過窗口菜單的形式可以配置,在uboot當(dāng)前路徑中執(zhí)行以下命令:
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
make menuconfig
然后會(huì)彈出下圖窗口:
在窗口中菜單中進(jìn)行配置,選擇SPI Flash驅(qū)動(dòng),同時(shí)將一些不必要的功能去掉如net、fs、I2C等,將delay參數(shù)改成0,另外可以對(duì)uboot的源碼進(jìn)行刪減,以盡可能地加快uboot的啟動(dòng)。
(2)uboot編譯
export CROSS_COMPILE=arm-poky-linux-gnueabi-
export ARCH=arm
make clean
make u-boot.imx
最后編譯出u-boot.imx,可以用于下載到spi flash中。
2、Linux Kernel
Linux Kernel是整個(gè)系統(tǒng)的核心部分,其可靠性和穩(wěn)定性與否決定了整個(gè)系統(tǒng)的可行性,硬件驅(qū)動(dòng)程序也其中。NXP同樣提供基于i.MX6ULL的Linux源碼,在此基礎(chǔ)上進(jìn)行移植裁剪。
(1)Linux移植
export CROSS_COMPILE=arm-poky-linux-gnueabi-
export ARCH=arm
make imx_v7_defconfig
打開配置窗口,執(zhí)行以下命令:
make menuconfig
然后會(huì)彈出以下配置窗口:
增加I2C、Carmera ov5640以及spi flash驅(qū)動(dòng),并將一些不要的net和驅(qū)動(dòng)去掉。
Ov5640驅(qū)動(dòng)配置在Device Drivers--->Multimedia support-->V4L platform devices
另外,需要在設(shè)備樹文件imx6ull-14x14-evk.dts中的I2C增加ov5640的一些參數(shù)配置,如下圖所示:
(2)Linux Kernel編譯
執(zhí)行以下命令編譯
make
最后會(huì)編譯出zImage 和imx6ull-14x14-evk.dtb,可以用于下載到spi flash。
3、rootfs
為了執(zhí)行應(yīng)用程序,需要移植rootfs,通過buildroot可以裁剪出最小的rootfs,rootfs以initramfs形式通過
kernel引導(dǎo)起來。
(1)下載buildroot源碼:
git clone git://git.buildroot.net/buildroot
(2)配置和編譯
make menuconfig
make
然后會(huì)編譯出最小的rootfs
將rootfs放在kernel同級(jí)目錄,在Linux Kernel中配置initramfs,可以與kernel編譯在一起。
4、下載
使用NXP提供的uuu工具將uboot和zImage以及imx6ull-14x14-evk.dtb下載到spiflash中
uuu uuu-spi
下載成功后然后上電啟動(dòng)后,調(diào)試串口輸出一些啟動(dòng)信息:
5、測(cè)試攝像頭
執(zhí)行以下命令:
# /usr/mx6s_v4l2_capture.out -m 1
然后會(huì)在LCD屏上顯示攝像頭采集的圖像:
在掃碼槍的應(yīng)用中,需要另外開發(fā)識(shí)讀二維碼算法或者購(gòu)買第三方的算法移植,以實(shí)現(xiàn)掃碼的功能。
? 場(chǎng)景應(yīng)用圖
? 產(chǎn)品實(shí)體圖
? 展示版照片
? 方案方塊圖
? 核心技術(shù)優(yōu)勢(shì)
●PCB板層:核心板4層,外圍板2層; ●工作溫度:工業(yè)級(jí)-40 ℃ ~ 105 ℃; ●封裝:14x14mm, 0.8mm間距,和9x9mm, 0.5mm間距,兩種BGA封裝可選; ●功耗低:深度睡眠模式,10.7mW; 系統(tǒng)空閑模式,20.6mW,詳見附件文檔AN5345.pdf. ●可擴(kuò)展性好,IO接口豐富; ●啟動(dòng)速度快:約2S(從上電開始到應(yīng)用程序加載之前)。
? 方案規(guī)格
●工作電壓:DC5V±10%; ●掃描條碼類別:一維碼,二維碼。 ●識(shí)讀精度:≥4mil.
相關(guān)資料下載: