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