Check the configuration file

← Older revision Revision as of 08:24, 9 December 2020
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
== Preparation ==
 +
First, please download BSP package from internet. It's preferred to download BSP package, instead of Jetpack.
  
 +
Go to '''https://developer.nvidia.com/embedded/linux-tegra'''.
 +
 +
The following packages are necessary:
 +
 +
'''L4T Driver Package (BSP)'''
 +
 +
'''Sample Root Filesystem'''
 +
 +
 +
Source code for kernel and other components:
 +
 +
'''L4T Driver Package (BSP) Sources'''
 +
 +
 +
Toolchain for kernel building:
 +
 +
'''GCC 7.3.1 for 64 bit BSP and Kernel'''
 +
 +
 +
Secure package if secure-boot is necessary:
 +
 +
'''Jetson Platform Fuse Burning and Secure Boot Documentation and Tools'''
 +
 +
 +
Refer to '''https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fquick_start.html'''
 +
 +
Then the device can be flashed by command line.
 +
With this method, user can have more controls for the BSP configuration, like pinmux, kernel/kernel DTB customization, etc.
 +
 +
== BSP customization ==
 +
=== PINMUX ===
 +
==== How to find out the actual pinmux configuration file ====
 +
Refer to https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fmb1_platform_config_xavier.html%23wwpID0E0240HA
 +
 +
There are several types of Jetson reference boards are supported in SDK.
 +
===== Check the configuration file =====
 +
For example, when the flash command is run:
 +
 +
  sudo ./flash.sh jetson-xavier mmcblk0p1
 +
 +
Check the configuration file: jetson-xavier.conf →  p2822-0000+p2888-0004.conf → PINMUX_CONFIG="tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg";
 +
 +
(Note: the value of PINMUX_CONFIG may be overwritten. So the later one should take effect.)
 +
 +
===== Or check the flash log =====
 +
Run following command:
 +
 +
sudo ./flash.sh -r --no-flash jetson-xavier mmcblk0p1
 +
 +
And check the log:
 +
 +
<pre style="margin-left:30px; color:#B0B0B0; background-color:#111111; white-space:pre-wrap;">
 +
...
 +
 +
copying pinmux_config(/home/Work/jetson_customer/32.4.3/Linux_for_Tegra/bootloader/t186ref/BCT/tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg)... done.
 +
 +
...
 +
</pre>
 +
 +
==== How to update pinmux ====
 +
There are several ways to customize the device PINMUX.
 +
The simple way is to generate PINMUX configuration through pre-defined excel.
 +
Another way is to edit the PINMUX configuration file directly, but that may need more knowledge about PINMUX setting for the chip.
 +
 +
===== Edit the excel and generate the Configuration =====
 +
Refer to https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fadaptation_and_bringup_xavier_nx.html%23wwpID0E0WL0HA
 +
 +
Search ''''Pinmux Changes''''
 +
 +
Also, another good reference: https://elinux.org/Jetson/AGX_Xavier_Update_Pinmux
 +
 +
Still, please make sure the PINMUX configuration file name is correct.
 +
 +
===== Edit the pinmux configuration file =====
 +
That's the direct and simple way, assumed the developer is familiar with PINMUX setting.
 +
 +
Download technical reference manual from https://developer.nvidia.com/embedded/downloads#?search=TRM for different platforms. And those documents contain detailed information.
 +
 +
===== Edit the prod configuration =====
 +
L4T document shows another way to override the PINMUX:
 +
 +
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fmb1_platform_config_xavier.html%23wwpID0E0A40HA
 +
 +
Same command as [[Jetson/L4T_BSP_development_tips#Or_check_the_flash_log|'''2.1.1.2''']], and check the prod configuration in following log:
 +
 +
<pre style="margin-left:30px; color:#B0B0B0; background-color:#111111; white-space:pre-wrap;">
 +
...
 +
 +
copying prod_config(/home/Work/jetson_customer/32.4.3/Linux_for_Tegra/bootloader/t186ref/BCT/tegra19x-mb1-prod-p2888-0000-p2822-0000.cfg)... done.
 +
 +
...</pre>
 +
 +
Follow the guide in above link.
 +
 +
===== How to update device PINMUX =====
 +
After the pinmux configuration files are changed, re-flash the device:
 +
 +
  sudo ./flash.sh jetson-xavier mmcblk0p1        #flash the whole device
 +
 +
or
 +
 +
  sudo ./flash.sh -k MB1_BCT jetson-xavier mmcblk0p1      #only flash the MB1_BCT
 +
 +
===== How to verify the new PINUX configuration works =====
 +
User can read the PINMUX registers to confirm the new configuration works.
 +
 +
For example,
 +
 +
In PINMUX configuration file, there's an entry:
 +
<pre style="margin-left:30px; color:#B0B0B0; background-color:#111111; white-space:pre-wrap;">
 +
pinmux.0x0c302030 = 0x00000540; # gen2_i2c_scl_pcc7: i2c2, tristate-disable, input-enable, io_high_voltage-disable, lpdr-enable</pre>
 +
 +
And in prod configuration file, another entry:
 +
<pre style="margin-left:30px; color:#B0B0B0; background-color:#111111; white-space:pre-wrap;">
 +
prod.0x0c302030.0x0000100 = 0x00000000; #gen2_i2c_scl_pcc7: LPDR disable</pre>
 +
 +
Run a physical memory access tool, like devmem2 in Jetson device:
 +
<pre style="margin-left:30px; color:#B0B0B0; background-color:#111111; white-space:pre-wrap;">
 +
root@nvidia-desktop:/home/nvidia# devmem2 0x0c302030
 +
/dev/mem opened.
 +
Memory mapped at address 0x7f84359000.
 +
Value at address 0xC302030 (0x7f84359030): 0x440</pre>