{"id":981,"date":"2021-07-13T16:02:58","date_gmt":"2021-07-13T09:02:58","guid":{"rendered":"https:\/\/bigdolphin.com.vn\/?p=981"},"modified":"2025-09-26T09:44:11","modified_gmt":"2025-09-26T02:44:11","slug":"playing-with-maixduino-building-firmware-for-micropython-and-overclocking","status":"publish","type":"post","link":"https:\/\/bigdolphin.com.vn\/?p=981","title":{"rendered":"Playing with Maixduino: building firmware for micropython and overclocking"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">1. Prepare<\/h3>\n\n\n\n<ul>\n<li>Maixduino kit<\/li>\n\n\n\n<li>Python3<\/li>\n\n\n\n<li>Ubuntu 64 bit<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" src=\"https:\/\/media-cdn.seeedstudio.com\/media\/catalog\/product\/cache\/b2267b506d4e4594666ef83a79896a9a\/m\/a\/maixduino-kit_1.jpg\" alt=\"https:\/\/media-cdn.seeedstudio.com\/media\/catalog\/product\/cache\/b2267b506d4e4594666ef83a79896a9a\/m\/a\/maixduino-kit_1.jpg\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2.&nbsp;Compile and flashing firmware<\/h3>\n\n\n\n<p>Maixduino can be used not only with Arduino IDE but also with MicroPython or even Linux.&nbsp;This tutorial just focuses on MicroPython.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.1.&nbsp;Install dependencies<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">sudo apt install python3 python3-pip build-essential cmake micro\nsudo pip3 install pyserial<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2.2 Download toolchain<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">wget http:\/\/dl.cdn.sipeed.com\/kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz<\/code><\/pre>\n\n\n\n<p>Backup link<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">wget https:\/\/github.com\/bigdolphin\/maixduino\/raw\/main\/Toolchain\/kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz<\/code><\/pre>\n\n\n\n<p>Go to section 6 if you want to re-compile toolchain.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.3 Extract to \/opt<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">sudo tar -Jxvf kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz -C \/opt\nls \/opt\/kendryte-toolchain\/bin<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2.4 Get source<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">git clone https:\/\/github.com\/bigdolphin\/MaixPy.git<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2.5 Get modules<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">cd MaixPy\ngit submodule update --recursive --init<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Update 2025: <\/strong><span style=\"text-decoration: underline;\">Fix compile error for micropython on Ubuntu 24 with GCC 13<\/span><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">cd components\/micropython\/core\/py\nmicro mkrules.mk<\/code><\/pre>\n\n\n\n<p>Add the option &#8220;-Wno-error=enum-int-mismatch -Wno-dangling-pointer&#8221; to line 35 of the rule:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$(Q)$(CC) $(CFLAGS) <font color=\"white\">-Wno-error=enum-int-mismatch -Wno-dangling-pointer<\/font> -c -MD -o $@ $&lt;<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2.6 Clean before build<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">cd projects\/maixpy_k210\npython3 project.py clean\npython3 project.py distclean<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2.7 Configure project<\/h4>\n\n\n\n<p>Change toolchain path if you place at different directory.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">python3 project.py --toolchain \/opt\/kendryte-toolchain\/bin --toolchain-prefix riscv64-unknown-elf- config<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">2.8 Select modules<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">python3 project.py menuconfig<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"701\" height=\"396\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image.png\" alt=\"\" class=\"wp-image-983\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image.png 701w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-300x169.png 300w\" sizes=\"(max-width: 701px) 100vw, 701px\" \/><figcaption class=\"wp-element-caption\">Menuconfig for MaixPy<\/figcaption><\/figure>\n\n\n\n<p>To have enough memory for complex camera or AI applications, NES, video and ws2812 modules should be disabled.<\/p>\n\n\n\n<p>Components configuration &#8212;&gt;<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; Board config &#8212;&gt;<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; (400000000)CPU clock default frequency, can be overwrite by config file in file system<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;*- Enable drivers component &#8212;&gt;<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&gt; Drivers configuration &#8212;&gt;<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&gt; WS2812 &#8212;&gt;<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; [  ] Enable ws2812 over i2s component<br>&#8212;&#8212;&#8212;&#8212;&#8212; [*] Enbale micropython component<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&gt; Micropython configurations<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&gt; Modules configurations<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; [*] Enable _thread module<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; [  ] Enable NES emulator<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; [*] Enbale LittlvGL<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; [*] Enable Speech Recognizer<br>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; [*] Enable Https SSL<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"679\" height=\"348\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-13.png\" alt=\"\" class=\"wp-image-997\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-13.png 679w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-13-300x154.png 300w\" sizes=\"(max-width: 679px) 100vw, 679px\" \/><figcaption class=\"wp-element-caption\">Default CPU clock is 400 MHz,&nbsp;maximum is 600 MHz for Maixduino,&nbsp;go to section 5 for overclocking<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"776\" height=\"256\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-34.png\" alt=\"\" class=\"wp-image-1088\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-34.png 776w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-34-300x99.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-34-768x253.png 768w\" sizes=\"(max-width: 776px) 100vw, 776px\" \/><figcaption class=\"wp-element-caption\">Disable ws2812 driver<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1001\" height=\"507\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/08\/image-1.png\" alt=\"\" class=\"wp-image-1120\" style=\"width:784px;height:397px\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/08\/image-1.png 1001w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/08\/image-1-300x152.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/08\/image-1-768x389.png 768w\" sizes=\"(max-width: 1001px) 100vw, 1001px\" \/><figcaption class=\"wp-element-caption\">Disable NES emulator + video + Ws2812 modules, enable LittlvGL + Speech Recognizer + Http SSL modules<\/figcaption><\/figure>\n\n\n\n<p>Press Esc many times to quit and Yes when it asks to save<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"704\" height=\"402\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-3.png\" alt=\"\" class=\"wp-image-986\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-3.png 704w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-3-300x171.png 300w\" sizes=\"(max-width: 704px) 100vw, 704px\" \/><figcaption class=\"wp-element-caption\">Quit and Save<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">2.9 Rebuild project<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">python3 project.py rebuild<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"708\" height=\"375\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-4.png\" alt=\"\" class=\"wp-image-987\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-4.png 708w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-4-300x159.png 300w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><figcaption class=\"wp-element-caption\">Completed build<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">2.10 Connect board to PC and check it will have two USB<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">ls \/dev\/ttyUSB*<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"294\" height=\"62\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-5.png\" alt=\"\" class=\"wp-image-988\"\/><figcaption class=\"wp-element-caption\">Connected kit shows two USB devices<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">2.11 Flash (Burn)&nbsp;firmware to board<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">python3 project.py -B maixduino -p \/dev\/ttyUSB0 -b 1500000 -S flash<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"454\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-6-1024x454.png\" alt=\"\" class=\"wp-image-989\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-6-1024x454.png 1024w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-6-300x133.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-6-768x340.png 768w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-6.png 1348w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Flash firmware to Maixduino<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Test with MaixPy IDE<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">3.1 Download and install MaixPy IDE<\/h4>\n\n\n\n<p>Go to <a rel=\"noreferrer noopener\" href=\"http:\/\/dl.sipeed.com\/shareURL\/MAIX\/MaixPy\/ide\/\" target=\"_blank\">http:\/\/dl.sipeed.com\/shareURL\/MAIX\/MaixPy\/ide\/<\/a> to download MaixPy IDE<\/p>\n\n\n\n<p>Backup link: <a href=\"https:\/\/bigfile.org\/index.php\/s\/9nWTN2MJv6a8FzN\" data-type=\"URL\" data-id=\"https:\/\/bigfile.org\/index.php\/s\/9nWTN2MJv6a8FzN\" target=\"_blank\" rel=\"noreferrer noopener\">MaixPy IDE<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2 Install Maix IDE at \/opt\/maixpyide<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">chmod +x maixpy-ide-linux-x86_64-0.2.5.run\nsudo .\/maixpy-ide-linux-x86_64-0.2.5.run<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3.3 Open Maix IDE<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">\/opt\/maixpyide\/bin\/maixpyide &amp;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"578\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-7.png\" alt=\"\" class=\"wp-image-990\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-7.png 834w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-7-300x208.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-7-768x532.png 768w\" sizes=\"(max-width: 834px) 100vw, 834px\" \/><figcaption class=\"wp-element-caption\">IDE with Hello World Example<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">3.4 Select board Maixduino<\/h4>\n\n\n\n<p>Tools -&gt; Select board -&gt; Sipeed Maixduino<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"835\" height=\"579\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-8.png\" alt=\"\" class=\"wp-image-991\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-8.png 835w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-8-300x208.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-8-768x533.png 768w\" sizes=\"(max-width: 835px) 100vw, 835px\" \/><figcaption class=\"wp-element-caption\">Select Maixduino<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">3.5 Connect IDE to board<\/h4>\n\n\n\n<p>Click Connect icon to select USB0 to connect.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"578\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-9.png\" alt=\"\" class=\"wp-image-992\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-9.png 834w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-9-300x208.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-9-768x532.png 768w\" sizes=\"(max-width: 834px) 100vw, 834px\" \/><figcaption class=\"wp-element-caption\">Click on Connect icon<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"839\" height=\"581\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-10.png\" alt=\"\" class=\"wp-image-993\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-10.png 839w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-10-300x208.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-10-768x532.png 768w\" sizes=\"(max-width: 839px) 100vw, 839px\" \/><figcaption class=\"wp-element-caption\">Select USB0 to connect<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">3.6 Load script to RAM of board for testing<\/h4>\n\n\n\n<p>Click on Start icon or Ctrl+R<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"837\" height=\"626\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-14.png\" alt=\"\" class=\"wp-image-998\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-14.png 837w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-14-300x224.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-14-768x574.png 768w\" sizes=\"(max-width: 837px) 100vw, 837px\" \/><figcaption class=\"wp-element-caption\">Click on Start icon<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">3.7 Open Serial Terminal to view result<\/h4>\n\n\n\n<p>Click on Serial Terminal on the bottom bar of the IDE<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"625\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-16.png\" alt=\"\" class=\"wp-image-1000\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-16.png 861w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-16-300x218.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-16-768x557.png 768w\" sizes=\"(max-width: 861px) 100vw, 861px\" \/><figcaption class=\"wp-element-caption\">Open Serial Terminal<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">3.8 Save script to flash memory<\/h4>\n\n\n\n<p>Tools -&gt; Save open script to board(boot.py)<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"624\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-17.png\" alt=\"\" class=\"wp-image-1001\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-17.png 860w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-17-300x218.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-17-768x557.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><figcaption class=\"wp-element-caption\">Save to flash memory<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. Manage files on board<\/h3>\n\n\n\n<p>uPyLoader is a useful tool to manage files (list,&nbsp;upload,&nbsp;download)&nbsp;on flash memory of Maixduino<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4.1 Download tool<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">git clone https:\/\/github.com\/BetaRavener\/uPyLoader<\/code><\/pre>\n\n\n\n<p>Backup link<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">git clone https:\/\/github.com\/bigdolphin\/uPyLoader.git<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">4.2 Open tool<\/h4>\n\n\n\n<p>Disconnect MaixPy IDE with board and open uPyLoader<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">cd uPyLoader\npython3 main.py<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"930\" height=\"514\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-18.png\" alt=\"\" class=\"wp-image-1002\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-18.png 930w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-18-300x166.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-18-768x424.png 768w\" sizes=\"(max-width: 930px) 100vw, 930px\" \/><figcaption class=\"wp-element-caption\">uPyLoader GUI<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">4.3 Connect to board<\/h4>\n\n\n\n<p>Click on Connect button to connect Maixduino via USB0<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"927\" height=\"513\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-19.png\" alt=\"\" class=\"wp-image-1003\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-19.png 927w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-19-300x166.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-19-768x425.png 768w\" sizes=\"(max-width: 927px) 100vw, 927px\" \/><\/figure>\n\n\n\n<p>uPyLoader will notice if the board has no transfer scripts. Go to File -&gt;&nbsp;Init transfer files to fix this issue.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"933\" height=\"515\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-20.png\" alt=\"\" class=\"wp-image-1004\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-20.png 933w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-20-300x166.png 300w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-20-768x424.png 768w\" sizes=\"(max-width: 933px) 100vw, 933px\" \/><figcaption class=\"wp-element-caption\">Transfer scripts now are on board<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5.&nbsp;Overclocking<\/h3>\n\n\n\n<p>K210 CPU can run at 800MHz maximum.&nbsp;However,&nbsp;Micropython on Maixduino just supports <strong>CPU clock<\/strong> <strong>range from 26 Mhz to 600 MHz<\/strong> <strong>with step of 13 MHz<\/strong>,&nbsp;voltage modification is required to run at higher frequency.&nbsp;These limitations are defined in the mpconfigboard.h of source code of firmware&nbsp;at path:&nbsp;components\/micropython\/port\/include\/mpconfigboard.h<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"482\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-21.png\" alt=\"\" class=\"wp-image-1005\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-21.png 730w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-21-300x198.png 300w\" sizes=\"(max-width: 730px) 100vw, 730px\" \/><figcaption class=\"wp-element-caption\">Frequency limitations<\/figcaption><\/figure>\n\n\n\n<p>Because of limitation of power supply and heat sink on Maixduino, CPU K210 can be overclocked to <span class=\"has-inline-color has-gtb-color-4-color\"><strong>598 MHz maximum<\/strong> <strong>without using KPU module<\/strong><\/span>. KPU clock default value is 416 MHz, it can be overclocked to values 450 MHz, 468 MHz, 476 MHz, 485 MHz, 494 MHz, 502 MHz, 520 MHz, 528 MHz, 537 MHz, 546 MHz, 559 MHz, 572 MHz, 585 MHz&nbsp;and 598 MHz. If both CPU and KPU are running, we should overclock CPU to 546 MHz and KPU to 450 MHz maximum to ensure long run.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5.1 Get current CPU and KPU clocks<\/h4>\n\n\n\n<p>Use <a rel=\"noreferrer noopener\" href=\"https:\/\/cn.maixpy.sipeed.com\/en\/libs\/Maix\/freq.html?h=frequency\" data-type=\"URL\" data-id=\"https:\/\/cn.maixpy.sipeed.com\/en\/libs\/Maix\/freq.html?h=frequency\" target=\"_blank\">freq<\/a> module in module Maix.&nbsp;This module has get functions to get CPU and KPU frequencies.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">from Maix import freq\n\ncpu_frq, kpu_frq=freq.get()\nprint(\"CPU Frq = %d MHz\" %(cpu_frq))\nprint(\"KPU Frq = %d MHz\" %(kpu_frq))<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"364\" height=\"225\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-22.png\" alt=\"\" class=\"wp-image-1006\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-22.png 364w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-22-300x185.png 300w\" sizes=\"(max-width: 364px) 100vw, 364px\" \/><figcaption class=\"wp-element-caption\">Get default CPU and KPU clocks<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">5.2 Overclocking<\/h4>\n\n\n\n<p>To overclock, use set function of Freq module. This function should be used only once because it will reboot the board after executing. The script below will check frequencies and set clocks to 546 MHz for CPU and 450 MHz for KPU.&nbsp;Setting new clocks will be saved into freq.conf on flash memory of the device,&nbsp;therefore,&nbsp;to ensure any issue on writing to flash,&nbsp;the script will remove old freq.conf file&nbsp;before setting.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">from Maix import freq\n\ncpu_frq, kpu_frq=freq.get()\nprint(\"\\nCPU Frq = %d MHz\" %(cpu_frq))\nprint(\"KPU Frq = %d MHz\" %(kpu_frq))\n\nif cpu_frq != 546 or kpu_frq != 450:\n    print(\"Removing old frequency...\")\n    os.remove(\"freq.conf\")\n    print(\"Overclocking CPU to 546 MHz and KPU to 450 MHz...\")\n    # kpu frequency is pll1\/kpu_div\n    freq.set(cpu=546, pll1=450, kpu_div=1)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"349\" height=\"176\" src=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-28.png\" alt=\"\" class=\"wp-image-1024\" srcset=\"https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-28.png 349w, https:\/\/bigdolphin.com.vn\/wp-content\/uploads\/2021\/07\/image-28-300x151.png 300w\" sizes=\"(max-width: 349px) 100vw, 349px\" \/><figcaption class=\"wp-element-caption\">Overclock CPU to 546 MHz and KPU to 450 MHz<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">6. Recompile toolchain<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">6.1 Install dependencies<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev libisl-dev<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">6.2 Get source<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">git clone --recursive https:\/\/github.com\/kendryte\/kendryte-gnu-toolchain<\/code><\/pre>\n\n\n\n<p>Backup link<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">git clone --recursive https:\/\/github.com\/bigdolphin\/kendryte-gnu-toolchain<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">6.3 Install submodules<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">cd kendryte-gnu-toolchain\ngit submodule update --init --recursive\ncd riscv-gcc\/\n.\/contrib\/download_prerequisites\ncd ..<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">6.4 Configure<\/h4>\n\n\n\n<p>Change prefix path if you want to install the toolchain at different path<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash line-numbers\">.\/configure --prefix=\/opt\/kendryte-toolchain --with-cmodel=medany --with-arch=rv64imafc --with-abi=lp64f<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">6.5 Compile<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">sudo make -j$(nproc)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">7. Save board  info into Maixduino<\/h3>\n\n\n\n<p>If you want to use alias names for GPIO and get that with board module, config.json file must be save into flash memory. Run the script below to do that.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">import json\nconfig = {\n  \"type\": \"duino\",\n  \"board_info\": {\n      'BOOT_KEY': 16,\n      'LED_R': 13,\n      'LED_G': 12,\n      'LED_B': 14,\n      'WIFI_TX': 6,\n      'WIFI_RX': 7,\n      'WIFI_EN': 8,\n      'MIC0_WS': 19,\n      'MIC0_DATA': 20,\n      'MIC0_BCK': 18,\n      'I2S_WS': 33,\n      'I2S_DA': 34,\n      'I2S_BCK': 35,\n      'ESP32_CS': 25,\n      'ESP32_RST': 8,\n      'ESP32_RDY': 9,\n      'ESP32_MOSI': 28,\n      'ESP32_MISO': 26,\n      'ESP32_SCLK': 27,\n      'PIN0':4,\n      'PIN1':5,\n      'PIN2':21,\n      'PIN3':22,\n      'PIN4':23,\n      'PIN5':24,\n      'PIN6':32,\n      'PIN7':15,\n      'PIN8':14,\n      'PIN9':13,\n      'PIN10':12,\n      'PIN11':11,\n      'PIN12':10,\n      'PIN13':3,\n  }\n}\ncfg = json.dumps(config)\nprint(cfg)\ntry:\n  with open('\/flash\/config.json', 'rb') as f:\n    tmp = json.loads(f.read())\n    print(tmp)\n    if tmp[\"type\"] != config[\"type\"]:\n      raise Exception('config.json no exist')\nexcept Exception as e:\n  with open('\/flash\/config.json', \"w\") as f:\n    f.write(cfg)\n  import machine\n  machine.reset()<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Turtorial of compiling and overclocking firmware for MicroPython on Maixduino<\/p>\n","protected":false},"author":2,"featured_media":1008,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-with-sidebar","format":"standard","meta":{"gtb_hide_title":false,"gtb_wrap_title":false,"gtb_class_title":"","gtb_remove_headerfooter":false,"footnotes":""},"categories":[10],"tags":[31,30,32,33],"_links":{"self":[{"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/posts\/981"}],"collection":[{"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=981"}],"version-history":[{"count":23,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":1661,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/posts\/981\/revisions\/1661"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=\/wp\/v2\/media\/1008"}],"wp:attachment":[{"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bigdolphin.com.vn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}