osprey

【树莓派】-bash: /usr/local/java/jdk1.8.0_161/bin/java: cannot execute binary file: Exec format error

纵然是瞬间 提交于 2020-12-31 03:16:10
遇到这样的问题:-bash: /usr/local/java/jdk1.8.0_161/bin/java: cannot execute binary file: Exec format error 原因是: 在 64 位的 Linux 系统中安装了 32 位的 JDK 环境,当前linux系统和所装的kdl版本之间不一致导致。 最简单的解决办法如下: # vim /etc/profile 在文档最后,添加: export PATH="/usr/local/src/java/bin:$PATH" 保存,退出,然后运行: #source /etc/profile vi /etc/profile JAVA_HOME=/usr/local/jdk1.8.0_161 CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH 或者: export JAVA_HOME=/usr/local/jdk1.8.0_161 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH 对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc

STM32固件升级详解(BootLoader)

∥☆過路亽.° 提交于 2020-08-09 01:58:35
基础知识 这里以 KEIL 开发环境和 STM32F103RET6 为例。 上电时单片机首先进入复位中断 Reset_Handler,即汇编文件的复位中断处理函数。 并且有一个中断向量表默认存在于 flash 地址开始处。 为什么说是默认呢?这是因为如果没有特殊要求的话很少会去改中断向量表。实际上这个中断向量表是可以更改的。但是在更改向量表之前必须在地址开始处建立一个向量表,因为在复位后,程序默认(硬件决定的)从flash开始的第一个字读取栈指针,第二字就是复位中断的入口,并根据该指针最终进入复位处理函数中执行相应的函数。如果没有这个中断向量表程序是无法启动的。 那么既然前面说可以重新设定中断向量表的位置,那必然有一个寄存器记录着这张表的位置,这就是 VTOR 寄存器。从《Cortex-M3权威指南》可以看该寄存器的介绍: 并且向量表的偏移量有如下要求: 64*4 是因为一个表项为4字节。 更具体的关于更改向量表的信息查看《Cortex-M3权威指南》。 在复位处理函数中有进入 SystemInit 函数执行,在函数里有一个设置中断向量表的位置的语句。 VECT_TAB_OFFSET 默认情况下就是 0。 因为这是官方库函数,并且上电之后必定进入复位中断函数处理,因此必定会执行重新定位向量表的操作。因此只要修改宏定义就可以重新定位向量表。 先准备两个程序,一个为