[New] v3.17.1 更新
- Edited
/* memory map */
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K
}
ENTRY(Reset_Handler)
SECTIONS
{
__stack_size = DEFINED(__stack_size) ? __stack_size : 2K;
/* ISR vectors */
.vectors :
{
. = ALIGN(4);
KEEP(*(.vectors))
. = ALIGN(4);
__Vectors_End = .;
__Vectors_Size = __Vectors_End - __gVectors;
} >FLASH
.text :
{
. = ALIGN(4);
*(.text)
*(.text*)
*(.glue_7)
*(.glue_7t)
*(.eh_frame)
KEEP (*(.init))
KEEP (*(.fini))
. = ALIGN(4);
/* the symbol ¡®_etext¡¯ will be defined at the end of code section */
_etext = .;
} >FLASH
.rodata :
{
. = ALIGN(4);
*(.rodata)
*(.rodata*)
. = ALIGN(4);
} >FLASH
.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} >FLASH
.ARM : {
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
} >FLASH
.ARM.attributes : { *(.ARM.attributes) } > FLASH
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(.fini_array*))
KEEP (*(SORT(.fini_array.*)))
PROVIDE_HIDDEN (__fini_array_end = .);
} >FLASH
/* provide some necessary symbols for startup file to initialize data */
_sidata = LOADADDR(.data);
.data :
{
. = ALIGN(4);
/* the symbol ¡®_sdata¡¯ will be defined at the data section end start */
_sdata = .;
*(.data)
*(.data*)
. = ALIGN(4);
/* the symbol ¡®_edata¡¯ will be defined at the data section end */
_edata = .;
} >RAM AT> FLASH
. = ALIGN(4);
.bss :
{
/* the symbol ¡®_sbss¡¯ will be defined at the bss section start */
_sbss = .;
__bss_start__ = _sbss;
*(.bss)
*(.bss*)
*(COMMON)
. = ALIGN(4);
/* the symbol ¡®_ebss¡¯ will be defined at the bss section end */
_ebss = .;
__bss_end__ = _ebss;
} >RAM
. = ALIGN(8);
PROVIDE ( end = _ebss );
PROVIDE ( _end = _ebss );
.stack ORIGIN(RAM) + LENGTH(RAM) - __stack_size :
{
PROVIDE( _heap_end = . );
. = __stack_size;
PROVIDE( _sp = . );
} >RAM AT>RAM
}
/* input sections */
GROUP(libgcc.a libc.a libm.a libnosys.a)
admin 这个是gd官方提供的 :
- Edited
@admin 现在的版本对portable不支持,能不能加上对环境变量 process.env.VSCODE_PORTABLE 的判断,对于portable版本,默认的.eide文件夹就可以放在DATA文件夹下,尝试借助AI对extension.js进行了修补,读配置文件的问题可以像如下方式修补,但是默认的homedir()不知道如何修补,因为完全不懂js,做了些尝试都会出错
_formatPathForPluginSettings(e) {
// 首先检查 process.env.VSCODE_PORTABLE 是否存在
if (process.env.VSCODE_PORTABLE) {
// 如果存在,则检查 e 中是否包含 "${env:VSCODE_PORTABLE}" 并替换它
if (e.includes('${env:VSCODE_PORTABLE}')) {
e = e.replace('${env:VSCODE_PORTABLE}', process.env.VSCODE_PORTABLE);
}
// 在这里,e 可能已经是一个完整的路径了,你可以根据需要添加额外的逻辑
// 例如,确保 e 是绝对路径(如果需要的话)
// 因为已经处理了 VSCODE_PORTABLE,所以下面的逻辑就不需要再执行了
return e;
}
// 如果 VSCODE_PORTABLE 不存在,则继续原有的逻辑
const t = h.WorkspaceManager.getInstance().getWorkspaceRoot();
// 如果 t 存在且尚未设置 ${workspaceFolder},则设置它
if (t && !this.eideEnv.has("${workspaceFolder}")) {
this.eideEnv.set("${workspaceFolder}", t.path);
}
// 替换 e 中的环境变量(现在只会替换 ${workspaceFolder},因为 VSCODE_PORTABLE 已经被处理了)
this.eideEnv.forEach((t, r) => {
const n = r.replace("$", "\\$").replace("{", "\\{").replace("}", "\\}");
e = e.replace(new RegExp(n, "gi"), t);
});
// 确保 e 是绝对路径(如果需要的话)
if (!c.isAbsolute(e) && t) {
e = t.path + u.File.sep + e; // 假设 u.File.sep 是路径分隔符
}
return e;
}
ffff 终于搞定了这个插件的便携化
用附件替换 VSCode\DATA\extensions\cl.eide-3.17.1\dist 目录下的extension.js文件即可
对于便携版,.eide的目录默认在DATA文件夹下
附件可以到这里下载
https://www.armbbs.cn/forum.php?mod=viewthread&tid=124187
- Edited
我也差不多这样处理的,只是每个用homedir的地方改成了判断语句,那个extension.js改的吐血,没办法格式化
大佬能不能在后面的版本中增加这个判断,原生支持便携化
那边附件还没审核过。。。。。
我是Macos用户,问下如何下载v3.16.1呢,另外,在macos如何解决ac6编译器的问题呢? 我尝试安装,有个/bin/uname文件找不到。
Brain2024 mac版本的AC6可以到https://artifacts.tools.arm.com/arm-compiler/下载,用ARM自带的ARM License Manager激活成Keil MDK Community,或者设置license环境变量。AC5无解,没有mac平台,可能Keil MDK Professional有吧。不过LTO有bug无法使用