Jetson TX2使用记录
一、配置
- 使用WE载板时,使用A3设备树
- 通过配置wifi连接为所有用户均可用来设置ubuntu不登陆也自动连接WiFi
二、工具
1. 安装jtop
- 使用
sudo apt-get install python-pip
安装pip - 使用
sudo -H pip install -U jetson-stats
安装jtop - 执行
jtop
打开jtop工具
2. 安装文件同步工具
- 使用samba文件共享,使用
sudo apt-get install samba samba-common
安装; - 使用
sudo smbpasswd -a user_name
添加用户名和密码; - 在
/etc/samba/smb.conf
中新增:
[share]
comment = share folder
path = /home/smartsat/share
valid users = smartsat
public = yes
writable = yes
create mask = 0777
- 使用命令
sudo service smbd restart
重启Samba。
3. I2C
apt-get install libi2c-dev i2c-tools
。
- 检测IIC总线数量:
i2cdetect -l
- 查看IIC总线挂载设备:
i2cdetect -r -y 1
4. ssh
使用OEM安装的ubuntu,在没有以太网连接时配置,会导致ssh工具没有办法生成密钥,需要在登录系统后,重新配置密钥:
sudo rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server
5. 模块温度
- 查看模块温度类型
cat /sys/devices/virtual/thermal/thermal_zone*/type
- 查看模块温度
cat /sys/devices/virtual/thermal/thermal_zone*/temp
三、自启动
1. 自启动优化
根据实际使用情况进行禁用,蓝牙、VNC、电话调制相关服务。
2. 自启动设置
1) 设置WiFi开机自动连接
2) 设置开机自动登录(用以远程)
- 先进入Unity桌面,设置自动登录,然后调整桌面管理器:
sudo dpkg-reconfigure lightdm
为lightdm; - 切换到LXDE桌面。
3) 应用软件自启动
- 更新/lib/systemd/system/rc-local.service:rc-local.service文件中写入以下内容:
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
#After=network.target
Before=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy = multi-user.target
Alias = rc-local.service
- 创建rc.local文件:Ubuntu 18.04中没有/etc/rc.local文件,所以需要自己新建一个,然后再rc.local中输入启动脚本内容即可,记得使用命令
chmod 777 XXXX
设置rc.local执行权限 - 启动服务:使用命令
sudo ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
建立软连接,然后使用命令sudo systemctl enable rc-local
使能服务 - 重启测试
3. 桌面修改
- 将修改屏幕分辨率设置成1920x1080,以方便远程桌面,修改 /etc/profile 文件,在文件末尾添加以下内容
xrandr -d :0 --fb 1920x1080
:
四、远程桌面
1、Vino
Ubuntu 18.04自带Vino,直接使用VNC view进行远程连接即可,由于不适用显示器,TX2屏幕分辨率默认是600x800,这样VNC远程过去界面小得可怜,所以需要将分辨率强制修改一下,使用命令xrandr -d :0 --fb 1920x1080
可以修改分辨率,然后再进行VNC远程。
- 启动Vino服务器:
/usr/lib/vino/vino-server
- 若是ssh下进入系统启动vino,则添加 --display=:0 参数:
/usr/lib/vino/vino-server --display=:0
- 配置:
gsettings set org.gnome.Vino enabled true
gsettings set org.gnome.Vino require-encryption false
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino view-only false
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n "password"|base64)
- 查看Vino的设置:
gsettings list-recursively org.gnome.Vino
gsettings list-recursively org.gnome.Vino | grep encrypt
2、VncServer
- 使用
apt-get install tightvncserver
安装svn server; - 执行
vncserver
生成配置文件; - 使用
tightvncserver -kill :1
先停止服务器; - 编辑~/.vnc/xstartup文件,在尾部添加:
lxterminal &
/usr/bin/lxsession -s LXDE &
- 使用
vncserver -geometry AAAxBBB
启动服务器; - 使用VNC view连接,格式为:IP:590X,X即为服务器编号。
五、FFMPEG
- yuv视频播放:ffplay -f rawvideo -video_size 宽x高 -pixel_format yuv420p out_crop_vfilter.yuv
pixel_format支持的格式有 :conversions=“yuv420p yuv422p yuv444p yuyv422 yuv410p yuv411p yuvj420p yuvj422p yuvj444p rgb24 bgr24 rgb32 rgb565 rgb555 gray monow monob yuv440p yuvj440p” - 格式转换:ffmpeg -s 360x270 -pix_fmt yuv420p -i 2_test_360x270_50.yuv -pix_fmt rgb24 aaaa.rgb
六、编码
- chroma_format_idc 的值应该在 0到 3的范围内(包括 0和 3)。当 chroma_format_idc不存在时,应推断其值为 1(4:2:0的色度格式),3是444色度格式
七、内核编译
导出环境变量:
export TEGRA_KERNEL_OUT=/home/baymax/Desktop/kernel_out
export CROSS_COMPILE="编译工具"
export LOCALVERSION=-tegra
进入kernel文件夹下,生成配置文件:
make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig
修改配置文件:
make ARCH=arm64 O=$TEGRA_KERNEL_OUT menuconfig
编译内核:
make ARCH=arm64 O=$TEGRA_KERNEL_OUT -jX
编译模块,生成kernel_supplements.tbz2
:
sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=<top>/Linux_for_Tegra/rootfs/
cd $INSTALL_MOD_PATH
sudo tar --owner root --group root -cjf kernel_supplements.tbz2 lib/modules
编译完成替换相关文件:
替换镜像文件:$TEGRA_KERNEL_OUT/arch/arm64/boot/Image > <release_packagep>/Linux_for_Tegra/kernel/Image
替换设备树文件:$TEGRA_KERNEL_OUT/arch/arm64/boot/dts/ > <release_packagep>/Linux_for_Tegra/kernel/dtb/
替换模块文件:模块文件 > Linux_for_Tegra/kernel/kernel_supplements.tbz2
烧录镜像,TX2进入REC Mode,路径Linux_for_Tegra/
:
sudo ./flash.sh jetson-tx2 mmcblk0p1
仅刷新设备树指令:sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1
仅刷新Uboot指令:sudo ./flash.sh -r -k kernel jetson-tx2 mmcblk0p1
八、Pinmux更改
- 将excel表生成的文件拷贝到
Linux_for_Tegra/kernel/pinmux/t186/
路径下 - 使用命令生成配置文件
python pinmux-dts2cfg.py --pinmux addr_info.txt gpio_addr_info.txt por_val.txt --
tegra18x-jetson-tx2-default-template-pinmux.dtsi \
tegra18x-jetson-tx2-default-template-gpio-default.dtsi 1.0 \
> ../../../bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-quill-p3310-1000-c03.cfg
- 目前修改pinmux后都需要重新flash
九、其它
- liunx内核手册:https://www.kernel.org/doc/html/v4.9/index.html
- 十六进制打印文件内容:
xxd -c 行字节数 -g 组字节数 sensor_tele.bin
- 查询字节序:
lscpu | grep -i byte
- menuconfig:
sudo apt-get install libncurses5-dev
- 内核配置介绍:
https://blog.csdn.net/JackSparrow_sjl/article/details/106331553
- 查询.ko信息:
modinfo XXX.ko
- 串口引脚信息:
serial@3100000 |ttyS0 |UARTA|G12、H12|UART0_ | 已配置
serial@3110000 |ttyTHS1 |UARTB|B15、B16|UART2_ | 已配置
serial@c280000 |ttyTHS2 |UARTC|D10、D9 |UART1_* | 已配置
serial@3130000 |ttyTHS3 |UARTD|H9、H10 |UART3_* | 已配置
serial@3140000 |ttyTHS4 |UARTE| 、B17 |FAN_TACH | 未配置
serial@3150000 |ttyTHS5 |UARTF|B26、F20|LCD_VDD_EN| 未配置
serial@c290000 |ttyTHS6 |UARTG|D5、D8 |UART7 |未配置