基於 NXP i.MX6ULL 的掃碼槍行業應用方案

掃碼槍是用來掃描條碼的設備,俗稱掃碼器、掃描器、掃描槍等。是光學、機械、電子、軟體應用等技術

緊密結合的高科技產品,是鍵盤、鼠標之後的主要電腦輸入設備。從直接的圖片、照片、膠片等圖紙到文稿都可用掃碼槍輸入到計算機中,實現信息處理、管理、使用、儲存或輸出。適用於物流、工廠、碼頭等工作環境惡劣,且工作負荷較高的行業。
          1

       i.MX 6ULL系列具有一個單核Cortex-A7平台,運行頻率最高可達900 MHz,配備128KB L2緩存和16位DDR3/DDR3L/LPDDR2支持,是一個高效率、高性價比應用處理器系列。

 ? i.MX6ULL應用處理器方框圖

  2
   

硬體設計說明:

    i.MX 6ULL開發板的功能電路及接口非常豐富,針對於掃碼槍,硬體部分我們只需要在上面做減法,保留開發板方框圖中的黃色部分。

 ? i.MX6ULL開發板部分原理圖
4
? i.MX6ULL開發板PCB Layout
5

軟體設計說明:

      本軟體系統採用的是Linux系統,Linux具有開源、快速移植、應用廣泛的特點,整個系統包括uboot、Linux Kernel、rootfs。由於將uboot、kernel、rootfs都放在16或32MB SPI Nor Flash中,並且要求快速啟動,因此軟體設計的一個任務是要對Linux系統進行裁剪使儘可能小。本章節主要對uboot、kernel、rootfs的移植裁剪以及應用程序測試說明。

1、Uboot

    uboot是bootloader,主要任務是初始化ARM、時鐘、外部DDR3、QSPI Nor Flash等,以及將Kernel從SPI Nor Flash中複製到DDR3中運行引導起來。

    i.MX6ULL上電啟動過程中首先是執行ROM Boot,讀到QSPI啟動方式設置後(硬體電路需先設置成QSPI啟動),先執行spiflash中的uboot,為了更快地運行uboot,需要對uboot進行移植裁剪,同時刪除一些不必要的功能。

(1)uboot配置和修改

uboot配置通過窗口菜單的形式可以配置,在uboot當前路徑中執行以下命令:

export CROSS_COMPILE=arm-linux-gnueabihf-

export ARCH=arm

make menuconfig

然後會彈出下圖窗口:
            7
   

       在窗口中菜單中進行配置,選擇SPI Flash驅動,同時將一些不必要的功能去掉如net、fs、I2C等,將delay參數改成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是整個系統的核心部分,其可靠性和穩定性與否決定了整個系統的可行性,硬體驅動程序也其中。NXP同樣提供基於i.MX6ULL的Linux源碼,在此基礎上進行移植裁剪。

  (1)Linux移植

  export CROSS_COMPILE=arm-poky-linux-gnueabi-

  export ARCH=arm

  make imx_v7_defconfig

  打開配置窗口,執行以下命令:

  make menuconfig

  然後會彈出以下配置窗口:

            6

        增加I2C、Carmera ov5640以及spi flash驅動,並將一些不要的net和驅動去掉。

      Ov5640驅動配置在Device Drivers--->Multimedia support-->V4L platform devices

另外,需要在設備樹文件imx6ull-14x14-evk.dts中的I2C增加ov5640的一些參數配置,如下圖所示:

            8

(2)Linux Kernel編譯

  執行以下命令編譯

  make

  最後會編譯出zImage 和imx6ull-14x14-evk.dtb,可以用於下載到spi flash。

3、rootfs

   為了執行應用程序,需要移植rootfs,通過buildroot可以裁剪出最小的rootfs,rootfs以initramfs形式通過
kernel引導起來。

(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

  下載成功後然後上電啟動後,調試串口輸出一些啟動信息:

  9

5、測試攝像頭

執行以下命令:

# /usr/mx6s_v4l2_capture.out -m 1

然後會在LCD屏上顯示攝像頭採集的圖像:

9
    

    在掃碼槍的應用中,需要另外開發識讀二維碼算法或者購買第三方的算法移植,以實現掃碼的功能。

 

►場景應用圖

►產品實體圖

►展示板照片

►方案方塊圖

►核心技術優勢

●PCB板層:核心板4層,外圍板2層; ●工作溫度:工業級-40 ℃ ~ 105 ℃; ●封裝:14x14mm, 0.8mm間距,和9x9mm, 0.5mm間距,兩種BGA封裝可選; ●功耗低:深度睡眠模式,10.7mW; 系統空閒模式,20.6mW,詳見附件文檔AN5345.pdf. ●可擴展性好,IO接口豐富; ●啟動速度快:約2S(從上電開始到應用程序加載之前)。

►方案規格

●工作電壓:DC5V±10%; ●掃描條碼類別:一維碼,二維碼。 ●識讀精度:≥4mil.

技術文檔

類型標題檔案
硬件Datasheet
硬件Schematics
推廣文件Application Note