Menggunakan Papan Reload Firefly-RK3288 dengan RockChip RK3288 SoC Microchip Digital I2C Thermal Sensor - MCP9808

Firefly-RK3288 Reload


Memilih papan pengembangan untuk eksperimen, pilihannya jatuh pada model yang agak canggih dari produsen Cina T-Chip. Mereka menjual produk dengan merek Firefly. Mereka berspesialisasi dalam papan dengan sistem berbasis pada chip RockChip. RK3288 adalah solusi 32-bit paling produktif dari perusahaan China ini. SoC dari RockChip dan Allwinner lebih baik dibandingkan dengan chip Broadcom di RaspberryPi tidak hanya dalam fitur terbaik mereka, tetapi juga dalam teknologi produksi - 28nm versus 40nm. Tapi tentu saja, dalam hal ini, Cina lebih mahal. RK3399 tidak memilih sistem 64-bit yang lebih curam, termasuk karena ada alasan untuk percaya bahwa itu sudah jauh lebih panas. Sementara RK3288 tidak terlalu panas di bawah beban, bahkan tanpa menggunakan radiator.

Halaman produk . Parameter perangkat keras utama perangkat: 4 inti ARM Cortex-A17 1,8 GHz (beberapa sumber bersikeras bahwa itu Cortex-A12 atau A15, tetapi ini tidak terlalu penting), 2 GB DDR3 dual-channel, drive 16 GB eMMC drive, 16 GB eMMC drive, gigabit Ethernet.

Tampilan umum

Saya membelinya di Ebay, itu hampir satu-satunya tempat di mana papan ini dapat dipesan ke Rusia. Toko online Firefly Cina sendiri tidak mengirim ke Rusia. Tidak dikirim ke Rusia dan Indiegogo. Yang lucu, dalam daftar negara yang akan dikirim, orang-orang aneh ini konon bahkan memiliki negara yang tidak ada :). Penjual dengan Ebay mengirim papan dalam konfigurasi yang baik - papan, catu daya (Anda perlu 12V 1.5A, dikirim sebagaimana mestinya dengan margin 2A), syal dengan antena, panel akrilik kasing dengan pengencang. Adaptor ini berlaku untuk outlet Amerika, tetapi semua orang harus memiliki adaptor hiking :).

Seperti papan CubieBoard CubieTech, yang lebih dikenal di pasar Rusia, Firefly memberikan dukungan informasi yang baik. Gambar OS, diagram pinout dan lainnya disediakan. Firmware Ubuntu 14 untuk Firefly layak dipuji. Ini bekerja secara stabil, konsumsi memori rendah. Desktop Grafis - LXDE. Tampilan antarmuka sepertinya tidak terlalu cepat, tetapi cukup baik. Omong-omong, tautan yang bermanfaat tentang cara mengambil tangkapan layar di LXDE: Lxde wiki . Informasi berguna lainnya adalah cara mengatur waktu: menggunakan dpkg-reconfigure tzdata . Ya, Anda tidak akan pernah menebak apa, dalam shell Linux apa pun, dilakukan dengan cara yang tidak sepele.



Papan memiliki struktur sandwich (gaya sandwich). Papan inti berisi SoC RockChip, RAM dan perangkat penyimpanan Samsung, Realtek Ethernet, serta chip daya dan pemantauan aktif. Papan Utama berisi segalanya: pengontrol output Lontium HDMI (hanya dua output), input Toshiba HDMI, jembatan JMicron USB-SATA, chip Ampak untuk antarmuka nirkabel. Dua bagian terhubung melalui slot MXM3.0 yang relatif standar (modul PCI Express seluler). Papan ini memiliki banyak antarmuka, serta empat blok utama pin, total 184 pin. Selain itu, pabrikan tidak menjalankan konektor ibu, itu tentu lebih aman, mengingat bahwa bahkan beberapa saluran listrik 12V bercerai.

Mode boot dan firmware


Hal pertama yang harus dilakukan dengan papan adalah untuk mem-flash-nya. Untuk interaksi sesekali dengan papan pengembangan, IOT dan semua itu, lebih mudah untuk memiliki sistem Linux di komputer Anda. Saya memilikinya secara tradisional Linux Fedora 64bit, untuk semua versi 26. Instruksi resmi untuk memasukkan board ke mode boot dan mem- flash image OS: Flash Image .

Karena utilitas upgrade_tool fill RockChip membutuhkan dependensi untuk diinstal . Dan tidak setiap versi distribusi Linux pada PC host mengatakan yang mana.
Saya ingin berbagi algoritme tindakan saya untuk berhasil mentransfer papan untuk boot dan mengisi gambar OS:

1.  . 2.     ( micro USB - USB). 3.        : -     RECOVER -   RESET -      RECOVER 4.  -   Linux Upgrade Tool (     ): - [user@nb-linuxfedora data-arm]$ unzip Linux_Upgrade_Tool_v1.24.zip - [user@nb-linuxfedora data-arm]$ cd Linux_Upgrade_Tool_v1.24/ - [user@nb-linuxfedora Linux_Upgrade_Tool_v1.24]$ sudo mv upgrade_tool /usr/local/bin/ - [user@nb-linuxfedora Linux_Upgrade_Tool_v1.24]$ sudo chown root:root /usr/local/bin/upgrade_tool - [user@nb-linuxfedora Linux_Upgrade_Tool_v1.24]$ cd /usr/local/bin/ - [user@nb-linuxfedora bin]$ -  ,    upgrade_tool      5.  Linux Upgrade Tool   <update>.img   (         ): [user@nb-linuxfedora bin]# sudo upgrade_tool -  ,       ,      Fedora,    .   Fedora 26       . ,   : libudev.so.1, libstdc++.so.6.          Linux    ,   Fedora : [user@linux]# dnf install libudev.so.1 installing: libcap-2.25-5.fc26.i686.rpm libgpg-error-1.25-2.fc26.i686.rpm xz-libs-5.2.3-2.fc26.i686.rpm systemd-libs-233-6.fc26.i686.rpm libgcc-7.2.1-2.fc26.i686.rpm libselinux-2.6-7.fc26.i686.rpm lz4-libs-1.8.0-1.fc26.i686.rpm libgcrypt-1.7.8-1.fc26.i686.rpm libsepol-2.6-2.fc26.i686.rpm pcre-8.41-1.fc26.i686.rpm [user@linux]# dnf install libstdc++.so.6 installing: libstdc++.i686 7.2.1-2.fc26   -   : [user@nb-linuxfedora bin]# sudo upgrade_tool : List of rockusb connected DevNo=1 Vid=0x2207,Pid=0x320a,LocationID=302 Loader Found 1 rockusb,Select input DevNo,Rescan press <R>,Quit press <Q>:1  "1"      .    uf. Rockusb>uf Firefly-RK3288-Reload_DualBoot_201612101121.img : Loading firmware... Support Type:RK32 FW Ver:5.0.00 FW Time:2016-12-10 11:21:47 Loader ver:2.30 Loader Time:2016-10-13 10:04:54 ( ...) Upgrade firmware ok. Rockusb>q 

Gunakan


Setelah Berhasil Firefly-RK3288 Memuat ulang firmware, lepaskan kabel USB. Dan Anda dapat menghubungkan monitor, keyboard, mouse. Dan dengan sendirinya menginstal kompiler g ++. Ubuntu LXDE for Firefly memiliki seperangkat perangkat lunak yang baik, minimal memadai. Tentu saja, yang paling berguna dalam situasi ini adalah terminal. Ada juga monitor sistem sederhana, editor teks Leafpad, keyboard di layar, manajer file, pemutar media, browser Chromium, dan lainnya.

Beberapa tangkapan layar:

gambar
Terminal dan Leafpad
gambar
Informasi Versi
Tentu saja tidak bisa tanpa lalat di salep. Papan internal bekerja dengan resolusi gambar Full HD, dan tangkapan layar disimpan dalam resolusi yang sama. Tetapi pada output HDMI, gambar dalam resolusi hanya HD ready dimasukkan ke monitor. Karena itu, gambar, tentu saja, tidak cukup jelas. Tetapi gambaran seperti itu akan dilakukan untuk eksperimen.

gambar
Beberapa film dalam kualitas yang baik bukan masalah bagi RK3288, utilisasi CPU sekitar 50%.

Menggunakan Perangkat I2C dan Pin GPIO


Mungkin salah satu fitur paling berharga dari papan tersebut adalah menghubungkan perangkat periferal melalui bus I2C, menggunakan GPIO dan antarmuka lainnya. Firefly RK3288 Reload memiliki empat bus I2C, bahkan lima, tetapi bus nol digunakan untuk kebutuhan internal board, dan empat lainnya - dari 1 hingga 4 diceraikan untuk digunakan oleh pengguna.

Jaringan memiliki informasi umum yang cukup tentang penggunaan antarmuka I2C. Untuk berinteraksi dengan perangkat I2C melalui terminal, saya merekomendasikan artikel ini: "I2C on Cubieboard dengan Lubuntu" , mereka menggunakan "cube" di sana, tetapi ini tidak penting.

Dan untuk terhubung ke perangkat I2C secara terprogram, menggunakan virtualisasi file bus I2C, Anda dapat merekomendasikan ini: "Berinteraksi dengan Perangkat I2C" .
Sebagai perangkat periferal I2C menggunakan sensor suhu Microchip - MCP9808. Di situs web produsen, mudah untuk menemukan spesifikasi perangkat yang baik. Ini adalah salah satu sensor kualitas tertinggi dan termahal di pasaran, secara signifikan lebih cepat dan lebih akurat daripada sensor Seri TI dan NXP LM.

gambar

Saya menggunakan sensor ini yang sudah disolder ke mini-board CJMCU-9808. Juga semuanya dengan Ebay - baik sensor maupun kabel Dupont - dapat dilakukan tanpa menyolder. Sambungannya cukup sederhana: VCC - untuk daya 3.3V, GND - ke ground, SCL dan SDA benar-benar mengimplementasikan bus I2C (jalur jam dan data, masing-masing), pin A0 A1 A2 menentukan bagian dari alamat 7-bit perangkat I2C, ALERT dapat, pada prinsipnya, tidak gunakan, tetapi saluran alarm masih akan terlibat lebih lanjut. Dalam foto tersebut, sensor suhu terhubung ke bus I2C 1, semua pin alamat ditarik ke tanah, yang berarti logis 0 pada bit alamat yang sesuai, jika kabel alamat dicolokkan ke daya 3.3V, maka bit ini akan logis 1. Alamat dasar chip MCP9808 adalah b0011 dan lanjut A2 A1 A0. Hanya tujuh bit, dalam hal ini - b0011000, yaitu, dalam hex - 0x18.

Dengan demikian, utilitas konsol akan menghasilkan:

 root@firefly:/home/firefly# i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- -- -- -- -- -- -- -- UU 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 

Dapat dilihat bahwa pada bus I2C nomor 1 ada sesuatu dengan alamat 0x18.

Hubungi:
root @ firefly: / home / firefly # i2cget -y 1 0x18 0x05 w
akan memberikan, misalnya: 0xbc01 (yang berarti suhu 27,75 C).

Parameter program i2cget: 1 - nomor bus; 0x18 - alamat yang terhubung ke bus perangkat; 0x05 - daftar alamat (dalam hal ini, suhu); w - menunjukkan bahwa register menyimpan 2 byte.

Tentu saja, Anda dapat menggunakan MCP9808 dari program C ++ Anda sendiri secara lebih lengkap. Ingatlah bahwa isi register suhu - 0xbc01 - terbalik, artinya dapat direpresentasikan sebagai 0x01bc. Byte pertama 0x01 berisi tiga bit penyebab alarm, satu bit tanda dan empat bit suhu tinggi. Byte kedua 0xbc berisi delapan bit suhu yang lebih rendah. Microchip mengkodekan isi register suhu menggunakan metode format komplemen keduanya . Bit kedua belas register double-byte mengkodekan karakter. Jika 0, maka suhunya positif. Jika bit kesebelas adalah 1, maka ke suhu sekitar yang dihitung Anda perlu menambahkan 2 ke tingkat 7 derajat Celcius - 2 ^ 7 (128 C), jika - sama dengan 0, maka - tidak ada yang perlu ditambahkan. Demikian pula, 1 dalam bit kesepuluh akan menambah 2 ^ 6 (64 C). Dan seterusnya, 1 di bit keempat akan menambah 2 ^ 0 (1 C). 1 di bit ketiga akan menambahkan 2 ^ -1 (0,5 C). 1 dalam yang terakhir - nol bit akan menambahkan 2 ^ -4 (0,0625 C). Jika sedikit tanda (12) adalah 1, maka masalahnya datang di rumah suhunya negatif. Dan dekripsi register agak rumit. Sesuai dengan prinsip-prinsip format komplemen dua, Anda harus terlebih dahulu membalikkan bit. Maka Anda perlu menambahkan satu ke bit yang paling sedikit digunakan, karena nilai negatif dikodekan bukan dengan 0, tetapi dengan -1. Saat mengkonfigurasi sensor suhu secara default, akurasi maksimum digunakan - hingga 0,0625 C. Dalam hal ini, Anda perlu menambahkan satu ke bit terakhir, yang bertanggung jawab atas 0,0625 C. Yaitu, Anda cukup menambahkan 1 ke nilai register suhu. Jika, misalnya, untuk meningkatkan kecepatan, kurangi keakuratan pengukuran suhu menggunakan register konfigurasi. Kemudian pada suhu negatif, Anda harus menambahkan satu ke bit yang lebih lama atau menambahkan nomor yang sesuai dengan bit ini. Maka perlu untuk menerjemahkan bit ke nilai suhu dengan cara yang sama seperti dalam kasus positif.

Jalur GPIO dan ALARM


gambargambar

Anda dapat menggunakan garis ALARM pada sensor. Termasuk menggunakan salah satu jalur GPIO Firefly. Dalam foto itu, tentu saja, timah dan bakar dengan LED dan resistensi kuno, tetapi di sini prinsip itu sendiri penting. Cara menggunakan GPIO dijelaskan dengan baik di artikel lain tentang Habré: Linux: tombol, LED dan GPIO . Tetapi seperti yang telah dicatat dengan benar, sulit untuk menentukan nomor Gpio mana yang akan diekspor untuk penggunaan di masa mendatang. Untuk melihat baris Gpio mana yang sibuk dan mana yang tidak, Anda dapat menggunakan perintah:

 root@firefly:/home/firefly# cat /sys/kernel/debug/gpio > /home/firefly/_temp/temp 

Tim

 firefly@firefly:~$ dmesg 

juga menunjukkan informasi tentang GPio.

Studi menunjukkan bahwa dimungkinkan untuk mengekspor, misalnya, nomor pin GPIO 262. Yang ditunjukkan di papan tulis dan dalam spesifikasi sebagai GPIO8 A6. Karena di papan ini, seperti biasa, blok GPIO masing-masing berisi 32 elemen. Dapat diasumsikan bahwa, mungkin, rumus ajaibnya adalah ini: 32 * nomor blok + nomor GPIO dari postfix. Jadi, kita bisa mendapatkan 32 * 8 + 6 = 262. Sekarang, pada awal program, kami dapat memasok daya 3.3V ke Gpio 262 ini, dan ketika kami keluar, berhenti lakukan ini.

Spesifikasi untuk MCP9808 menunjukkan bahwa garis ALARM di atasnya adalah saluran terbuka, mis. stok terbuka. Ini berarti bahwa ketika alarm terjadi, garis ini dipendekkan ke ground, jika tidak maka akan terpendek. Kebutuhan untuk menggunakan resistor juga ditekankan. Dalam praktiknya, telah diverifikasi bahwa ini benar-benar diperlukan, jika tidak, dengan berlalunya arus, interior sensor akan dipanaskan hingga suhu tinggi. Diagram berikut ditunjukkan pada foto: GPIO terhubung secara seri ke LED, resistance, open drain (ALARM) dari sensor. Masih menggunakan register konfigurasi MCP9808 untuk mengatur batas suhu yang diizinkan. Ketika melampaui itu, alarm akan muncul. Anda dapat mengatur dua level suhu terlalu tinggi dan satu level terlalu rendah. Secara umum, untuk bekerja dengan sensor digital ini, tentu saja, Anda perlu membaca spesifikasi dengan cermat, beralih ke mode konfigurasi, kembali ke mode kerja, dan banyak lagi. Dengan demikian, ketika suhu melampaui batas yang ditetapkan, arus akan melewati kontak ALARM dan menyalakan LED.

Kesimpulannya


Saya ingin menyebutkan trik yang berguna untuk mengendalikan cahaya LED yang tertanam di papan pengembangan. Manual untuk Cubieboard 6 menunjukkan cara mengaktifkan LED1:

 $echo default-on > /sys/class/leds/led1-GPIOB9/trigger 

Dan cara mematikan LED1:

 $echo none > /sys/class/leds/led1-GPIOB9/trigger 

Berdasarkan ini, ditemukan bagaimana mengontrol LED di Firefly 3288 Reload.
Menghidupkan LED khusus kuning (sebenarnya LED biru):

 root@firefly:/home/firefly# echo default-on > /sys/class/leds/firefly:yellow:user/trigger 

Menonaktifkan LED ini:

 root@firefly:/home/firefly# echo none > /sys/class/leds/firefly:yellow:user/trigger 

Tindakan pencegahan


Saat mendesain papan pengembangan, penting untuk berhati-hati. Pengkodean, tentu saja, terjadi pada PC, dengan banyak keinginan dan kompilasi silang juga. Kemudian kode sumber dikompilasi pada target tertentu atau file yang dapat dieksekusi siap pakai ditransfer ke papan tulis. Dan jika papan khusus sebagian besar dibuat untuk menggunakan semua jenis antarmuka. Ya, dan mereka biasanya tidak terlalu mahal. Pada PC mahal sendiri, mencoba menggunakan bus I2C, jalur GPIO dan sejenisnya tidak dianjurkan. Ini dapat menyebabkan kerusakan komputer yang tidak menyenangkan. Setidaknya utilitas konsol seperti i2cget secara eksplisit memperingatkan tentang ini, mengutip beberapa model laptop yang rusak sebagai contoh.

Source: https://habr.com/ru/post/id412763/


All Articles