Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Rock3/CM3/raspcm4io"

< Rock3‎ | CM3
(Linux/macOS)
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
 
     [[rock3 | ROCK 3]] > [[rock3/CM3 | Compute Module 3]] > [[Rock3/CM3/raspcm4io | Raspberry Pi CM4 IO Board]]
 
     [[rock3 | ROCK 3]] > [[rock3/CM3 | Compute Module 3]] > [[Rock3/CM3/raspcm4io | Raspberry Pi CM4 IO Board]]
  
= Getting Started =
+
__NOTOC__
===What you need ===
+
===== Necessary =====
+
* Radxa CM3
+
* Raspberry Pi CM4 IO board
+
* One of the Storage media below:
+
** microSD, larger than 8GB.
+
* Power supply
+
** The CM4 is powered by DC port and has a wide range of input voltage,  12V.
+
* USB Keyboard and Mouse
+
** With four USB-A connectors, CM4 IO can be equipped with a full sized keyboard and mouse.
+
* Monitor and HDMI Cable
+
** CM4 IO  is equipped with a full sized HDMI connector. HDMI capable monitor is recommended.
+
** HDMI EDID display data is used to determine the best display resolution. On monitors and TVs that support 1080p (or 4K) this resolution will be selected. If 1080p is not supported the next available resolution reported by EDID will be used. This selected mode will work with MOST but not all monitors/TVs.
+
*Micro USB
+
**If you want write image on CM4 IO  from USB port , commands you need an USB Male A to Micro USB cable to connect CM4 IO  and PC.
+
===== Optional =====
+
* microSD Card Reader
+
** For flashing the image into microSD Card
+
* USB type A to type Micro USB
+
** Write image on CM4 IO  from USB port
+
*  USB to TTL serial cable
+
** This is needed for serial console.
+
*  Ethernet cable
+
** CM4 IO  supports Internet access via WIFI or Ethernet.
+
** An Ethernet cable is used to connect your CM4 IO  to a local network and  the Interne
+
* Audio cable
+
** Audio can be played through speaker or headphones using a standard 3.5mm jack.
+
* [[rock3/hardware/wifi | WiFi/BT Cards]]
+
  
=== Install on eMMC from USB port ===
+
Radxa CM3 + Raspberry Pi CM4 IO Board is an application board for the  [[rock3/CM3 | ROCK3 Compute Module(CM3)]] with rich IO features.
CM4 supports Maskrom mode, which is a special operation mode for CPU to wait for Micro USB port command.
+
The PC tools we use to communicate with CM4 IO in Maskrom mode are the '''rkdevelopment tool''' and '''AndroidTool tool'''.
+
We use '''the rkdevelopment tool in Linux/macOS ''' and '''the AndroidTool tool under Windows'''.
+
  
==== Requirement ====
+
<div class="thumbnail ">[[File:Cm3_rpicm4_io_board.png | right]]</div>
* CM4 IO  board
+
* Power adapter
+
* '''USB Male A to Micro USB .  
+
  
==== Install Tools&Drivers ====
+
== Features ==
<div class="toccolours mw-collapsible" style="width:800px; overflow:auto;">
+
  
==== Windows ====
+
== Getting Started ==
<div class="mw-collapsible-content">
+
=====Step 1:Install Android tool=====
+
The tool is provided in a compressed package. First, download the compressed package of this tool, and click the download link [https://dl.radxa.com/tools/windows/RKDevTool_Release_v2.81.zip (RKDevTool_Release_v2.81.zip)]. After downloading, unzip it. Installation is complete.
+
=====Step 2:Install driver=====
+
Using the RK driver assistant tool to install the driver.
+
There’s no need to connect your Rockchip device during this procedure just download and extract [https://dl.radxa.com/tools/windows/DriverAssitant_v5.0.zip RKDriverAssistant.zip]
+
Then double click on DriverInstall.exe in the RKDriverAssistant directory to start the utility. If you installed the Rockchip USB drivers for any other Rockchip devices already, make sure you click “Uninstall Driver” first.
+
[[File:RK_Driver_Assistant_Install_Uninstall.jpg]]
+
  
Then click “Install Driver”, the driver has finish installing.
+
* [[Rock3/CM3/raspcm4io/getting_started | Getting started with Radxa CM3 + Raspberry Pi Compute Module 4 IO Board ]]
</div>
+
</div>
+
<div class="toccolours mw-collapsible" style="width:800px; overflow:auto;">
+
  
==== Linux====
+
== Resource ==
<div class="mw-collapsible-content">
+
For Linux, we build the rkdeveloptool, '''>=1.32''', from source code.
+
To build rkdeveloptool on a Debian based Linux distribution, follow the instruction below:
+
Install build dependency:
+
  sudo apt-get install libudev-dev libusb-1.0-0-dev dh-autoreconf
+
Clone the source code and build:
+
  git clone https://github.com/rockchip-linux/rkdeveloptool
+
  cd rkdeveloptool
+
  autoreconf -i
+
  ./configure
+
  make
+
If you encounter compile error like below
+
    ./configure: line 4269: syntax error near unexpected token `LIBUSB1,libusb-1.0'
+
    ./configure: line 4269: `PKG_CHECK_MODULES(LIBUSB1,libusb-1.0)'
+
You should install pkg-config libusb-1.0
+
    sudo apt-get install pkg-config libusb-1.0
+
Then re-run
+
    autoreconf -i
+
    ./configure
+
    make
+
Now you have rkdeveloptool executable at the current directory.
+
  sudo cp rkdeveloptool /usr/local/bin/
+
</div>
+
</div>
+
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
+
* [[Rock3/CM3/raspcm4io/gpio | Raspberry Pi CM4 IO Board GPIO]]
 
+
==== MacOS ====
+
<div class="mw-collapsible-content">
+
For macOS, we build the rkdeveloptool, '''>=1.32''', from source code.
+
To build rkdeveloptool on macOS, you need [https://brew.sh/ homebrew](or similar package manager) to install required packages.
+
Install build dependency:
+
    brew install automake autoconf libusb lsusb
+
Clone the source code and build:
+
    git clone https://github.com/rockchip-linux/rkdeveloptool
+
    cd rkdeveloptool
+
    autoreconf -i
+
    ./configure
+
    make
+
If you encounter compile error like below
+
    ./configure: line 4269: syntax error near unexpected token `LIBUSB1,libusb-1.0'
+
    ./configure: line 4269: `PKG_CHECK_MODULES(LIBUSB1,libusb-1.0)'
+
You should install pkg-config libusb-1.0
+
    brew install pkg-config
+
Then re-run
+
    autoreconf -i
+
    ./configure
+
    make
+
Now you have rkdeveloptool executable at the current directory.
+
    sudo cp rkdeveloptool /usr/local/bin/
+
</div>
+
</div>
+
 
+
==== Boot the board to maskrom mode ====
+
To boot CM4 IO  into maskrom mode is simple:
+
* 1. Power off the board
+
** remove microSD card
+
* 2. Plug the USB Male A to Micro USB cable to CM4 IO  port(the upper USB3 port), the other side to PC
+
* 3.Press the key and hold, short the follow pins,  and then disconnect the pins,release the key.
+
[[File:Cm4-io-maskrom.jpg |400px]]
+
* 4. For Linux/macOS
+
Now on your Linux PC, '''lsusb''' command show show the following usb devices
+
    Bus 003 Device 005: ID 2207:330c
+
* 5. For Windows
+
Open device manager in your Windows PC, check the Device Manager:
+
 
+
[[File:RK_Driver_Assistant_Install_Usb_driver.png]]
+
 
+
It means the device is in '''maskrom mode''' now.
+
* 6. Now plug the eMMC module and proceed the next step to flash.
+
Alternatively, if you are running Android and can access ADB, you can reboot the device to loader mode `adb reboot bootloader` then use the rkdeveloptool to reset the device into maskrom mode `rkdeveloptool rd 3` or Windows AndroidTool '''Switch''' button to go to maskrom mode.
+
 
+
 
+
=== Begin Installation USB -> eMMC ===
+
<div class="toccolours mw-collapsible " style="width:800px; overflow:auto;">
+
==== Linux/macOS ====
+
<div class="mw-collapsible-content">
+
On your PC, run the rkdeveloptool
+
    rkdeveloptool ld        # List the device
+
    DevNo=1 Vid=0x2207,Pid=0x330c,LocationID=305 Maskrom
+
Download the loader (flash helper) to init the ram and prepare the flashing environment etc. If you don't have it, you can download it from [https://dl.radxa.com/rock3/images/loader/ here]
+
    rkdeveloptool db rk356x_loader_vxxxx.bin
+
Write the GPT image to eMMC, start to write from offset '''0'''. you can get image from [https://github.com/radxa/rock-3-images-released/releases here].
+
    rkdeveloptool wl 0 /path/to/xxx-gpt.img
+
Reboot the device
+
    rkdeveloptool rd
+
Now the device should boot the new image on eMMC
+
Please notice that when you want to erase eMMC on board, you can use this command. Get zero.img from [https://dl.radxa.com/rockpi4/images/others/zero.img.gz here].
+
    rkdeveloptool db rk356x_loader_vxxxx.bin
+
    rkdeveloptool wl 0 zero.img
+
</div>
+
</div>
+
<div class="toccolours mw-collapsible" style="width:800px; overflow:auto;">
+
 
+
==== Windows ====
+
<div class="mw-collapsible-content">
+
Double click the '''RKDevTool.exe''' and you will see the following interface:
+
Double click this red box and modify it to '''image''' in the second row.
+
[[File:Modify-options.jpeg | 600px]]
+
===== Step 1: Select Loader =====
+
If your CM4 IO is in maskrom mode and connects to PC, you can see that the program detect it '''Found one MASKROM Device''' in the red box
+
Next, click the button in the first row on the right last columns select the loader "rk356x_xxx_ loader_ xxxxx.bin ",
+
[[File:select-loader-bin.jpeg | 600px]]
+
''Note:'' the loader (flash helper) is used to init the ram and prepare the flashing environment etc.
+
If you don't have it, you can download it from [https://dl.radxa.com/rock3/images/loader/rk356x_spl_loader_ddr1056_v1.06.110.bin here]
+
===== Step 2: Select Image =====
+
Then click the right last columns to in the Image row and choose the image you want to flash.You can download the image from [https://github.com/radxa/rock-3-images-released/releases here]
+
''Note'': Normally the image name should ends with xxx-gpt.img. If the image name ends with xxx-rkupdate.img, you can not flash with this method.
+
===== Step 3: Run =====
+
Finally, click the "run" button, and you will see the content on the right. When the progress reaches 100% or show '''Download image OK''' in the red box, the download is completed.
+
[[File:3a-run-image.jpeg | 600px]]
+
</div>
+
</div>
+
 
+
 
+
 
+
 
+
 
+
 
+
= Status =
+
 
+
= Resource =
+
 
+
====<span id="gpio">General purpose input-output (GPIO) connector</span> ====
+
 
+
CM4 IO has a 40-pin expansion header. Each pin is distinguished by color.
+
 
+
{| class="wikitable" style="vertical-align:middle;"
+
|- style="font-weight:bold; text-align:center;"
+
! GPIO number
+
! Function4
+
! Function3
+
! Function2
+
! Function1
+
! Pin#
+
!
+
! Pin#
+
! Function1
+
! Function2
+
! Function3
+
! Function4
+
! GPIO number
+
|-
+
|
+
|
+
|
+
|
+
| +3.3V
+
| style="background-color:#FF0;" | 1
+
|
+
| style="background-color:#F00;" | 2
+
| +5.0V
+
|
+
|
+
|
+
|
+
|-
+
| 14
+
| SPI0_MOSI_M0
+
| I2C2_SDA_M0
+
| PWM2_M1
+
| GPIO0_B6
+
| style="background-color:#008000; color:#FFF;" | 3
+
|
+
| style="background-color:#F00;" | 4
+
| +5.0V
+
|
+
|
+
|
+
|
+
|-
+
| 13
+
| SPI0_CLK_M0
+
| I2C2_SCL_M0
+
| PWM1_M1
+
| GPIO0_B5
+
| style="background-color:#008000; color:#FFF;" | 5
+
|
+
| style="background-color:#000; color:#FFF" | 6
+
| GND
+
|
+
|
+
|
+
|
+
|-
+
| 125
+
|
+
| I2S1_SDI3_M1
+
| SDMMC2_PWREN_M0
+
| GPIO3_D5
+
| style="background-color:#008000; color:#FFF;" | 7
+
|
+
| style="background-color:#008000; color:#FFF;" | 8
+
| GPIO0_D1
+
| style="background-color:#FFA500;" | UART2_TX_M0
+
|
+
|
+
| 25
+
|-
+
|
+
|
+
|
+
|
+
| GND
+
| style="background-color:#000; color:#FFF" | 9
+
|
+
| style="background-color:#008000; color:#FFF;" | 10
+
| GPIO0_D0
+
| style="background-color:#FFA500;" | UART2_RX_M0
+
|
+
|
+
| 24
+
|-
+
| 23
+
|
+
| UART0_CTSn
+
| PWM0_M1
+
| GPIO0_C7
+
| style="background-color:#008000; color:#FFF;" | 11
+
|
+
| style="background-color:#008000; color:#FFF;" | 12
+
| GPIO3_C7
+
| I2S1_SCLK_TX_M1
+
|
+
|
+
| 119
+
|-
+
| 15
+
|
+
|
+
| PWM0_M0
+
| GPIO0_B7
+
| style="background-color:#008000; color:#FFF;" | 13
+
|
+
| style="background-color:#000; color:#FFF" | 14
+
| GND
+
|
+
|
+
|
+
|
+
|-
+
| 19
+
|
+
| PWM4
+
| VOP_PWM_M0
+
| GPIO0_C3
+
| style="background-color:#008000; color:#FFF;" | 15
+
|
+
| style="background-color:#008000; color:#FFF;" | 16
+
| GPIO3_D4
+
| I2S1_SDI2_M1
+
|
+
|
+
| 124
+
|-
+
|
+
|
+
|
+
|
+
| +3.3V
+
| style="background-color:#FF0;" | 17
+
|
+
| style="background-color:#008000; color:#FFF;" | 18
+
| GPIO3_D3
+
| I2S1_SDI1_M1
+
|
+
|
+
| 123
+
|-
+
| 138
+
| I2S2_SDI_M1
+
| SPI3_MOSI_M0
+
| I2C4_SDA_M0
+
| GPIO4_B2
+
| style="background-color:#008000; color:#FFF;" | 19
+
|
+
| style="background-color:#000; color:#FFF" | 20
+
| GND
+
|
+
|
+
|
+
|
+
|-
+
| 136
+
|
+
| SPI3_MISO_M0
+
| I2S1_SDO1_M1
+
| GPIO4_B0
+
| style="background-color:#008000; color:#FFF;" | 21
+
|
+
| style="background-color:#008000; color:#FFF;" | 22
+
| GPIO3_C6
+
| I2S1_MCLK_M1
+
|
+
|
+
| 118
+
|-
+
| 139
+
| I2S2_SDO_M1
+
| SPI3_CLK_M0
+
| I2C4_SCL_M0
+
| GPIO4_B3
+
| style="background-color:#008000; color:#FFF;" | 23
+
|
+
| style="background-color:#008000; color:#FFF;" | 24
+
| GPIO4_A6
+
| I2S1_SCLK_RX_M1
+
| SPI3_CS0_M0
+
|
+
| 134
+
|-
+
|
+
|
+
|
+
|
+
| GND
+
| style="background-color:#000; color:#FFF" | 25
+
|
+
| style="background-color:#008000; color:#FFF;" | 26
+
| SARADC_IN3
+
|
+
|
+
|
+
|
+
|-
+
| 140
+
|
+
|
+
| I2C2_SDA_M1
+
| GPIO4_B4
+
| style="background-color:#00F; color:#FFF;" | 27
+
|
+
| style="background-color:#00F; color:#FFF;" | 28
+
| GPIO4_B5
+
| I2S1_SDO3_M1
+
| I2C2_SCL_M1
+
|
+
| 141
+
|-
+
| 137
+
|
+
| I2S1_SDO2_M1
+
| ISP_PRELIGHT_TRIG
+
| GPIO4_B1
+
| style="background-color:#008000; color:#FFF;" | 29
+
|
+
| style="background-color:#000; color:#FFF" | 30
+
| GND
+
|
+
|
+
|
+
|
+
|-
+
| 21
+
|
+
| SPI0_MISO_M0
+
| PWM6
+
| GPIO0_C5
+
| style="background-color:#008000; color:#FFF;" | 31
+
|
+
| style="background-color:#008000; color:#FFF;" | 32
+
| GPIO4_C0
+
| PWM11_IR_M1
+
|
+
|
+
| 144
+
|-
+
| 22
+
|
+
| SPI0_CS0_M0
+
| PWM7_IR
+
| GPIO0_C6
+
| style="background-color:#008000; color:#FFF;" | 33
+
|
+
| style="background-color:#000; color:#FFF" | 34
+
| GND
+
|
+
|
+
|
+
|
+
|-
+
| 120
+
|
+
|
+
| I2S1_LRCK_TX_M1
+
| GPIO3_D0
+
| style="background-color:#008000; color:#FFF;" | 35
+
|
+
| style="background-color:#008000; color:#FFF;" | 36
+
| GPIO4_A7
+
| I2S1_LRCK_RX_M1
+
| SPI3_CS1_M0
+
|
+
| 135
+
|-
+
| 18
+
|
+
|
+
| PWM3_IR
+
| GPIO0_C2
+
| style="background-color:#008000; color:#FFF;" | 37
+
|
+
| style="background-color:#008000; color:#FFF;" | 38
+
| GPIO3_D2
+
| I2S1_SDI0_M1
+
|
+
|
+
| 122
+
|-
+
|
+
|
+
|
+
|
+
| GND
+
| style="background-color:#000; color:#FFF" | 39
+
|
+
| style="background-color:#008000; color:#FFF;" | 40
+
| GPIO3_D1
+
| I2S1_SDO0_M1
+
|
+
|
+
| 121
+
|}
+
 
+
==== More details about 40-pin Header ====
+
 
+
* Pins marked with color orange are designed for debug console.
+
* PWM:x7,PWM0/PWM1/PWM2/PWM3/PWM6/PWM7/PWM11
+
* SPI:X2,SPI0/SPI3
+
* I2C:X2,I2C2/I2C4
+
* UART:X2,UART0/UART2
+
* ADC:X1, SARADC_IN3
+
* I2S:X2, I2S1/I2S2
+
 
+
=== IO Voltage ===
+
 
+
RK3566 have three IO voltages, 1.8V/3.3V. For CM4 IO, the high level voltage of GPIO pin on 40-PIN HEADER is 3.3V.
+
 
+
<pre>
+
| GPIO      | Voltage Level | Tolerance |
+
| ---------- | ------------- | --------- |
+
| SARADC_IN3    | 1.8V          | 1.98V    |
+
</pre>
+
 
+
=== GPIO number ===
+
 
+
Rockchip RK3566 GPIO has 5 banks, GPIO0 to GPIO4, each bank has 32pins, naming as below:
+
 
+
GPIO0_A0 ~ A7
+
GPIO0_B0 ~ B7
+
GPIO0_C0 ~ C7
+
GPIO0_D0 ~ D7
+
   
+
GPIO1_A0 ~ A7
+
....
+
GPIO1_D0 ~ D7
+
 
+
The GPIO number can be calculated as below, take GPIO4_D1 (PIN26 on 4-0PIN HEADER) as an example:
+
 
+
GPIO4_D1 = 4*32 + 3*8 + 1 = 153
+
(A=0, B=1, C=2, D=3)
+
 
+
To set GPIO4_D1 output
+
 
+
cd /sys/class/gpio
+
echo 153 > export
+
cd gpio153
+
echo out > direction
+
echo 1 > value    # output high
+
echo 0 > value    # output low
+

Latest revision as of 13:10, 12 February 2022

    ROCK 3 >  Compute Module 3 >  Raspberry Pi CM4 IO Board


Radxa CM3 + Raspberry Pi CM4 IO Board is an application board for the ROCK3 Compute Module(CM3) with rich IO features.

Cm3 rpicm4 io board.png

Features

Getting Started

Resource