1、安装工具链
sudo apt-get install device-tree-compiler
2、解包dtb->dts
dtc -I dtb -O dts -o xxx.dts xxx.dtb
3、压包dts->dtb
dtc -I dts -O dtb -o xxx.dtb xxx.dts
1、安装工具链
sudo apt-get install device-tree-compiler
2、解包dtb->dts
dtc -I dtb -O dts -o xxx.dts xxx.dtb
3、压包dts->dtb
dtc -I dts -O dtb -o xxx.dtb xxx.dts
arm系统不同于x86服务器,可能是因为外设驱动的问题,无法在启动阶段通过编辑grub进入单用户模式而得以修改root的密码。所以,可如下操作:
1、用其他外置启动盘启动系统,通常是U盘
2、挂载原系统(在eMMC)上的文件系统的 /etc目录
3、vi该目录下的shadow,删除其中root之后两个冒号之间的加密密码
4、保存、退出vi,sync并且shutdown系统
5、拔除外置启动盘,重加电启动原系统
6、此时root已无需密码即可登录,登录后及时passwd修改密码
1、找到USB转TTL模块,连接主板TTL排针,具体排针定义请自行百度,或者留言询问。
2、打开xshell软件,连接USB转TTL模块,波特率大多115200,可以多试几个。之后上电,一直按空间。进入boot指令模式。
3、修改环境变量
setenv bootfromrecovery 0
setenv bootfromnand 0
setenv start_mmc_autoscript 'if fatload mmc 0 11000000 s805_autoscript; then autoscr 11000000; fi;'
setenv start_usb_autoscript "if fatload usb 0 11000000 s805_autoscript; then autoscr 11000000; fi; if fatload usb 1 11000000 s805_autoscript; then autoscr 11000000; fi;"
setenv start_autoscript 'if usb start; then run start_usb_autoscript; fi; if mmcinfo; then run start_mmc_autoscript; fi;'
setenv bootcmd 'run start_autoscript; run storeboot'
saveenv
4、手动启动优盘引导或者TF卡引导。
run bootcmd
5、异常处理
如果bootcmd修改未生效,可以更改为其他名字。
在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。
STM32出现硬件错误可能有以下原因:
在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击STOP停止仿真。
1、在Keil菜单栏点击View——Registers Window
在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值;如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。
介绍程序R14(LR) = 0xFFFFFFF9实例如下:
2、在Keil菜单栏点击“View”—“Memory Windows”—“Memory1”
在“Address”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。地址一般以0x08开头的32位数。本例中,地址为0x08003CB9。
3、在Keil菜单栏点击View——Disassembly Window
在Disassembly窗口中右击,在下拉菜单中选择Show Disassemblyat Address…。在弹出框Show Code atAdress的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。仔细查看附近区域的相关代码来排查错误具体原因。
1、在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。
2、在Keil菜单栏点击View——Call Stack Window
弹出Call Stack + Locals对话框。然后在对话框中右键选择Show Caller Code,就会跳转到出错之前的函数处,仔细查看这部分函数被调用或者数组内存使用情况。