Difference between revisions of "Template:S5Pxx18Android"
(updated by API) |
(updated by API) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 71: | Line 71: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===Android Keys=== | ===Android Keys=== | ||
− | Android 5:< | + | Android 5: |
− | vendor/friendly-arm/nanopi3/security/< | + | <syntaxhighlight lang="bash"> |
− | Android 7<br /> | + | vendor/friendly-arm/nanopi3/security/ |
− | build/target/product/security/<br /> | + | </syntaxhighlight> |
+ | Android 7:<br /> | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | build/target/product/security/ | ||
+ | </syntaxhighlight> | ||
+ | ===Optimizing HDMI Performance on Android 7=== | ||
+ | ====Note==== | ||
+ | By default, the driver initializes two framebuffers, one for the primary LCD display and the other for HDMI. If your project specifically requires the use of HDMI and not the LCD, you can follow the steps outlined in this chapter to make modifications. After making these changes, HDMI will be configured as the primary display, resulting in the initialization of only one framebuffer. This optimization conserves resources and leads to corresponding improvements in UI performance and boot speed.<br /> | ||
+ | The content of this chapter is applicable exclusively to S5P6818 running Android 7. For S5P4418, the modification process is similar, with adjustments needed in the corresponding files.<br /> | ||
+ | ====Modify the kernel==== | ||
+ | You need to modify the kernel Device Tree Source (DTS) to disable the dp_drm_lvds node, as shown below: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | --- a/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi | ||
+ | +++ b/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi | ||
+ | @@ -810,6 +810,7 @@ | ||
+ | plane-names = "video", "rgb", "primary"; | ||
+ | }; | ||
+ | port@1 { | ||
+ | + status = "disabled"; | ||
+ | reg = <1>; | ||
+ | back_color = < 0x0 >; | ||
+ | color_key = < 0x0 >; | ||
+ | @@ -820,7 +821,7 @@ | ||
+ | |||
+ | &dp_drm_lvds { | ||
+ | remote-endpoint = <&lcd_panel>; | ||
+ | - status = "ok"; | ||
+ | + status = "disabled"; | ||
+ | |||
+ | display-timing { | ||
+ | clock-frequency = <50000000>; | ||
+ | </syntaxhighlight> | ||
+ | After compilation, you will obtain a new arch/arm64/boot/dts/nexell/s5p6818-nanopi3-rev*.dtb file.<br /> | ||
+ | During the testing phase, you can directly update it to the board using adb with the following command: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb root; adb wait-for-device; adb shell mkdir /storage/sdcard1/; adb | ||
+ | shell mount -t ext4 /dev/block/mmcblk0p1 /storage/sdcard1/ | ||
+ | adb push arch/arm64/boot/dts/nexell/s5p6818-nanopi3-rev*.dtb /storage/sdcard1/ | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | For a complete firmware update, you will need to replace the files in the device/friendlyelec/nanopi3/boot directory of the Android 7 source code. | ||
+ | ====Modify env.conf==== | ||
+ | To modify the device/friendlyelec/nanopi3/boot/env.conf file and add a line | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | lcdtype HDMI1080P60 | ||
+ | </syntaxhighlight> | ||
+ | This mode needs to match the mode detected by Android 7 after startup; otherwise, it may result in a prolonged black screen state or even no display output. In such cases, you may need to manually set it in the U-Boot command-line environment: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | setenv lcdtype HDMI1080P60; saveenv; reset | ||
+ | </syntaxhighlight> | ||
+ | ====Modify system.prop==== | ||
+ | To modify the device/friendlyelec/nanopi3/system.prop file in Android 7 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | ro.sf.lcd_density=240 | ||
+ | </syntaxhighlight> | ||
+ | Alternatively, you can adjust the system property or experiment with different values that you deem more appropriate. You can also use the following command to change the display density under the serial or adb environment and observe if the effect is suitable: | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | adb shell wm density 240 | ||
+ | </syntaxhighlight> | ||
+ | ==== Compiling Android ==== | ||
+ | Follow the instructions in the wiki to compile Android 7 and conduct testing. If you encounter any exceptions, please carefully review the preceding steps. |
Latest revision as of 08:43, 8 September 2023
Contents
1 Work with Android
1.1 Work with 4G Module EC20 under Android5
1.1.1 Hardware Setup
Connect an EC20 module to a USB to miniPCIe board and connect the board to an ARM board's USB Host. Here is a hardware setup:
Power on the board and you will be able to surf the internet with the 4G module like using an Android phone.
1.2 Modify the Android boot Logo
Replace the logo.bmp:
/opt/FriendlyARM/smart4418/android/device/friendly-arm/nanopi3/boot/logo.bmp /opt/FriendlyARM/smart4418/android/device/friendly-arm/nanopi2/boot/logo.bmp
Replace the bootanimation.zip:
/opt/FriendlyARM/smart4418/android/device/friendly-arm/nanopi3/bootanimation.zip /opt/FriendlyARM/smart4418/android/device/friendly-arm/nanopi2/bootanimation.zip
Re-compile android.
1.3 Use fastboot command to flash android firmware
Enter the uboot command line mode on the serial terminal when powering on, and then enter the following command:
fastboot 0
For S5P4418:
fastboot flash partmap partmap.txt fastboot flash 2ndboot bl1-mmcboot.bin fastboot flash fip-loader loader-mmc.img fastboot flash fip-secure bl_mon.img fastboot flash fip-nonsecure bootloader.img fastboot flash boot boot.img fastboot flash system system.img fastboot flash cache cache.img fastboot flash userdata userdata.img
For S5P6818:
fastboot flash partmap partmap.txt fastboot flash 2ndboot bl1-mmcboot.bin fastboot flash fip-loader fip-loader.img fastboot flash fip-secure fip-secure.img fastboot flash fip-nonsecure fip-nonsecure.img fastboot flash boot boot.img fastboot flash system system.img fastboot flash cache cache.img fastboot flash userdata userdata.img
1.4 Android Keys
Android 5:
vendor/friendly-arm/nanopi3/security/
Android 7:
build/target/product/security/
1.5 Optimizing HDMI Performance on Android 7
1.5.1 Note
By default, the driver initializes two framebuffers, one for the primary LCD display and the other for HDMI. If your project specifically requires the use of HDMI and not the LCD, you can follow the steps outlined in this chapter to make modifications. After making these changes, HDMI will be configured as the primary display, resulting in the initialization of only one framebuffer. This optimization conserves resources and leads to corresponding improvements in UI performance and boot speed.
The content of this chapter is applicable exclusively to S5P6818 running Android 7. For S5P4418, the modification process is similar, with adjustments needed in the corresponding files.
1.5.2 Modify the kernel
You need to modify the kernel Device Tree Source (DTS) to disable the dp_drm_lvds node, as shown below:
--- a/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi +++ b/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi @@ -810,6 +810,7 @@ plane-names = "video", "rgb", "primary"; }; port@1 { + status = "disabled"; reg = <1>; back_color = < 0x0 >; color_key = < 0x0 >; @@ -820,7 +821,7 @@ &dp_drm_lvds { remote-endpoint = <&lcd_panel>; - status = "ok"; + status = "disabled"; display-timing { clock-frequency = <50000000>;
After compilation, you will obtain a new arch/arm64/boot/dts/nexell/s5p6818-nanopi3-rev*.dtb file.
During the testing phase, you can directly update it to the board using adb with the following command:
adb root; adb wait-for-device; adb shell mkdir /storage/sdcard1/; adb shell mount -t ext4 /dev/block/mmcblk0p1 /storage/sdcard1/ adb push arch/arm64/boot/dts/nexell/s5p6818-nanopi3-rev*.dtb /storage/sdcard1/
For a complete firmware update, you will need to replace the files in the device/friendlyelec/nanopi3/boot directory of the Android 7 source code.
1.5.3 Modify env.conf
To modify the device/friendlyelec/nanopi3/boot/env.conf file and add a line
lcdtype HDMI1080P60
This mode needs to match the mode detected by Android 7 after startup; otherwise, it may result in a prolonged black screen state or even no display output. In such cases, you may need to manually set it in the U-Boot command-line environment:
setenv lcdtype HDMI1080P60; saveenv; reset
1.5.4 Modify system.prop
To modify the device/friendlyelec/nanopi3/system.prop file in Android 7
ro.sf.lcd_density=240
Alternatively, you can adjust the system property or experiment with different values that you deem more appropriate. You can also use the following command to change the display density under the serial or adb environment and observe if the effect is suitable:
adb shell wm density 240
1.5.5 Compiling Android
Follow the instructions in the wiki to compile Android 7 and conduct testing. If you encounter any exceptions, please carefully review the preceding steps.