Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
隱藏空白變更
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
文字樣式
變更外觀
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
FeatherM4CAN to TOOL1RR (linker debug)
建立於
去年
差異永不過期
清除
匯出
分享
兩個文本完全相同
這兩個文本之間沒有差異
0 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
188 行
全部複製
0 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
188 行
全部複製
/**
/**
* \file
* \file
*
*
* \brief Linker script for running in internal FLASH on the SAME51N19A
* \brief Linker script for running in internal FLASH on the SAME51N19A
*
*
* Copyright (c) 2017 Microchip Technology Inc.
* Copyright (c) 2017 Microchip Technology Inc.
*
*
* \asf_license_start
* \asf_license_start
*
*
* \page License
* \page License
*
*
* SPDX-License-Identifier: Apache-2.0
* SPDX-License-Identifier: Apache-2.0
*
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* not use this file except in compliance with the License.
* You may obtain a copy of the Licence at
* You may obtain a copy of the Licence at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* See the License for the specific language governing permissions and
* limitations under the License.
* limitations under the License.
*
*
* \asf_license_stop
* \asf_license_stop
*
*
*/
*/
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
OUTPUT_ARCH(arm)
SEARCH_DIR(.)
SEARCH_DIR(.)
/* Memory Spaces Definitions */
/* Memory Spaces Definitions */
MEMORY
MEMORY
{
{
rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000
bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000
bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000
qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000
qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000
}
}
/* Section Definitions */
/* Section Definitions */
SECTIONS
SECTIONS
{
{
.text :
.text :
{
{
. = ALIGN(4);
. = ALIGN(4);
_sfixed = .;
_sfixed = .;
KEEP(*(.vectors .vectors.*))
KEEP(*(.vectors .vectors.*))
*(.text .text.* .gnu.linkonce.t.*)
*(.text .text.* .gnu.linkonce.t.*)
*(.glue_7t) *(.glue_7)
*(.glue_7t) *(.glue_7)
*(.rodata .rodata* .gnu.linkonce.r.*)
*(.rodata .rodata* .gnu.linkonce.r.*)
*(.ARM.extab* .gnu.linkonce.armextab.*)
*(.ARM.extab* .gnu.linkonce.armextab.*)
/* Support C constructors, and C destructors in both user code
/* Support C constructors, and C destructors in both user code
and the C library. This also provides support for C++ code. */
and the C library. This also provides support for C++ code. */
. = ALIGN(4);
. = ALIGN(4);
KEEP(*(.init))
KEEP(*(.init))
. = ALIGN(4);
. = ALIGN(4);
__preinit_array_start = .;
__preinit_array_start = .;
KEEP (*(.preinit_array))
KEEP (*(.preinit_array))
__preinit_array_end = .;
__preinit_array_end = .;
. = ALIGN(4);
. = ALIGN(4);
__init_array_start = .;
__init_array_start = .;
KEEP (*(SORT(.init_array.*)))
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
KEEP (*(.init_array))
__init_array_end = .;
__init_array_end = .;
. = ALIGN(4);
. = ALIGN(4);
KEEP (*crtbegin.o(.ctors))
KEEP (*crtbegin.o(.ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(SORT(.ctors.*)))
KEEP (*crtend.o(.ctors))
KEEP (*crtend.o(.ctors))
. = ALIGN(4);
. = ALIGN(4);
KEEP(*(.fini))
KEEP(*(.fini))
. = ALIGN(4);
. = ALIGN(4);
__fini_array_start = .;
__fini_array_start = .;
KEEP (*(.fini_array))
KEEP (*(.fini_array))
KEEP (*(SORT(.fini_array.*)))
KEEP (*(SORT(.fini_array.*)))
__fini_array_end = .;
__fini_array_end = .;
KEEP (*crtbegin.o(.dtors))
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(SORT(.dtors.*)))
KEEP (*crtend.o(.dtors))
KEEP (*crtend.o(.dtors))
. = ALIGN(4);
. = ALIGN(4);
_efixed = .; /* End of text section */
_efixed = .; /* End of text section */
} > rom
} > rom
/* .ARM.exidx is sorted, so has to go in its own output section. */
/* .ARM.exidx is sorted, so has to go in its own output section. */
PROVIDE_HIDDEN (__exidx_start = .);
PROVIDE_HIDDEN (__exidx_start = .);
.ARM.exidx :
.ARM.exidx :
{
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > rom
} > rom
PROVIDE_HIDDEN (__exidx_end = .);
PROVIDE_HIDDEN (__exidx_end = .);
. = ALIGN(4);
. = ALIGN(4);
_etext = .;
_etext = .;
/* CAN message buffers must be in the first 64K of RAM */
/* CAN message buffers must be in the first 64K of RAM */
.canMessage (NOLOAD) :
.canMessage (NOLOAD) :
{
{
. = ALIGN(4);
. = ALIGN(4);
_sCanMessage = . ;
_sCanMessage = . ;
*(.CanMessage .CanMessage.*)
*(.CanMessage .CanMessage.*)
. = ALIGN(4);
. = ALIGN(4);
_eCanMessage = . ;
_eCanMessage = . ;
} > ram
} > ram
/* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */
/* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */
.dmaBuffers (NOLOAD) :
.dmaBuffers (NOLOAD) :
{
{
. = ALIGN(16);
. = ALIGN(16);
_sDmaBuffers = . ;
_sDmaBuffers = . ;
*(.DmaBuffers .DmaBuffers.*)
*(.DmaBuffers .DmaBuffers.*)
. = ALIGN(4);
. = ALIGN(4);
_eDmaBuffers = . ;
_eDmaBuffers = . ;
} > ram
} > ram
.relocate : AT (_etext)
.relocate : AT (_etext)
{
{
. = ALIGN(4);
. = ALIGN(4);
_srelocate = .;
_srelocate = .;
*(.ramfunc .ramfunc.*);
*(.ramfunc .ramfunc.*);
*(.data .data.*);
*(.data .data.*);
. = ALIGN(4);
. = ALIGN(4);
_erelocate = .;
_erelocate = .;
} > ram
} > ram
_firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */
_firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */
.bkupram (NOLOAD):
.bkupram (NOLOAD):
{
{
. = ALIGN(8);
. = ALIGN(8);
_sbkupram = .;
_sbkupram = .;
*(.bkupram .bkupram.*);
*(.bkupram .bkupram.*);
. = ALIGN(8);
. = ALIGN(8);
_ebkupram = .;
_ebkupram = .;
} > bkupram
} > bkupram
.qspi (NOLOAD):
.qspi (NOLOAD):
{
{
. = ALIGN(8);
. = ALIGN(8);
_sqspi = .;
_sqspi = .;
*(.qspi .qspi.*);
*(.qspi .qspi.*);
. = ALIGN(8);
. = ALIGN(8);
_eqspi = .;
_eqspi = .;
} > qspi
} > qspi
/* .bss section which is used for uninitialized data */
/* .bss section which is used for uninitialized data */
.bss (NOLOAD) :
.bss (NOLOAD) :
{
{
. = ALIGN(4);
. = ALIGN(4);
_sbss = . ;
_sbss = . ;
_szero = .;
_szero = .;
*(.bss .bss.*)
*(.bss .bss.*)
*(COMMON)
*(COMMON)
. = ALIGN(4);
. = ALIGN(4);
_ebss = . ;
_ebss = . ;
_ezero = .;
_ezero = .;
} > ram
} > ram
. = ALIGN(4);
. = ALIGN(4);
_end = . ;
_end = . ;
/* .stack_dummy section doesn't contains any symbols. It is only
/* .stack_dummy section doesn't contains any symbols. It is only
used for linker to calculate size of stack sections, and assign
used for linker to calculate size of stack sections, and assign
values to stack symbols later */
values to stack symbols later */
.stack_dummy :
.stack_dummy :
{
{
*(.stack*)
*(.stack*)
} > ram
} > ram
/* Set stack top to end of ram, and stack limit move down by
/* Set stack top to end of ram, and stack limit move down by
* size of stack_dummy section */
* size of stack_dummy section */
__StackTop = ORIGIN(ram) + LENGTH(ram);
__StackTop = ORIGIN(ram) + LENGTH(ram);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(_sstack = __StackLimit);
PROVIDE(_sstack = __StackLimit);
PROVIDE(_estack = __StackTop);
PROVIDE(_estack = __StackTop);
}
}
已保存差異
原始文本
開啟檔案
/** * \file * * \brief Linker script for running in internal FLASH on the SAME51N19A * * Copyright (c) 2017 Microchip Technology Inc. * * \asf_license_start * * \page License * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the Licence at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * \asf_license_stop * */ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) SEARCH_DIR(.) /* Memory Spaces Definitions */ MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000 ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000 bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 } /* Section Definitions */ SECTIONS { .text : { . = ALIGN(4); _sfixed = .; KEEP(*(.vectors .vectors.*)) *(.text .text.* .gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) *(.rodata .rodata* .gnu.linkonce.r.*) *(.ARM.extab* .gnu.linkonce.armextab.*) /* Support C constructors, and C destructors in both user code and the C library. This also provides support for C++ code. */ . = ALIGN(4); KEEP(*(.init)) . = ALIGN(4); __preinit_array_start = .; KEEP (*(.preinit_array)) __preinit_array_end = .; . = ALIGN(4); __init_array_start = .; KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) __init_array_end = .; . = ALIGN(4); KEEP (*crtbegin.o(.ctors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*crtend.o(.ctors)) . = ALIGN(4); KEEP(*(.fini)) . = ALIGN(4); __fini_array_start = .; KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) __fini_array_end = .; KEEP (*crtbegin.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*crtend.o(.dtors)) . = ALIGN(4); _efixed = .; /* End of text section */ } > rom /* .ARM.exidx is sorted, so has to go in its own output section. */ PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > rom PROVIDE_HIDDEN (__exidx_end = .); . = ALIGN(4); _etext = .; /* CAN message buffers must be in the first 64K of RAM */ .canMessage (NOLOAD) : { . = ALIGN(4); _sCanMessage = . ; *(.CanMessage .CanMessage.*) . = ALIGN(4); _eCanMessage = . ; } > ram /* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */ .dmaBuffers (NOLOAD) : { . = ALIGN(16); _sDmaBuffers = . ; *(.DmaBuffers .DmaBuffers.*) . = ALIGN(4); _eDmaBuffers = . ; } > ram .relocate : AT (_etext) { . = ALIGN(4); _srelocate = .; *(.ramfunc .ramfunc.*); *(.data .data.*); . = ALIGN(4); _erelocate = .; } > ram _firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */ .bkupram (NOLOAD): { . = ALIGN(8); _sbkupram = .; *(.bkupram .bkupram.*); . = ALIGN(8); _ebkupram = .; } > bkupram .qspi (NOLOAD): { . = ALIGN(8); _sqspi = .; *(.qspi .qspi.*); . = ALIGN(8); _eqspi = .; } > qspi /* .bss section which is used for uninitialized data */ .bss (NOLOAD) : { . = ALIGN(4); _sbss = . ; _szero = .; *(.bss .bss.*) *(COMMON) . = ALIGN(4); _ebss = . ; _ezero = .; } > ram . = ALIGN(4); _end = . ; /* .stack_dummy section doesn't contains any symbols. It is only used for linker to calculate size of stack sections, and assign values to stack symbols later */ .stack_dummy : { *(.stack*) } > ram /* Set stack top to end of ram, and stack limit move down by * size of stack_dummy section */ __StackTop = ORIGIN(ram) + LENGTH(ram); __StackLimit = __StackTop - SIZEOF(.stack_dummy); PROVIDE(_sstack = __StackLimit); PROVIDE(_estack = __StackTop); }
更改後文本
開啟檔案
/** * \file * * \brief Linker script for running in internal FLASH on the SAME51N19A * * Copyright (c) 2017 Microchip Technology Inc. * * \asf_license_start * * \page License * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the Licence at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * \asf_license_stop * */ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) SEARCH_DIR(.) /* Memory Spaces Definitions */ MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000 ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00030000 bkupram (rwx) : ORIGIN = 0x47000000, LENGTH = 0x00002000 qspi (rwx) : ORIGIN = 0x04000000, LENGTH = 0x01000000 } /* Section Definitions */ SECTIONS { .text : { . = ALIGN(4); _sfixed = .; KEEP(*(.vectors .vectors.*)) *(.text .text.* .gnu.linkonce.t.*) *(.glue_7t) *(.glue_7) *(.rodata .rodata* .gnu.linkonce.r.*) *(.ARM.extab* .gnu.linkonce.armextab.*) /* Support C constructors, and C destructors in both user code and the C library. This also provides support for C++ code. */ . = ALIGN(4); KEEP(*(.init)) . = ALIGN(4); __preinit_array_start = .; KEEP (*(.preinit_array)) __preinit_array_end = .; . = ALIGN(4); __init_array_start = .; KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) __init_array_end = .; . = ALIGN(4); KEEP (*crtbegin.o(.ctors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*crtend.o(.ctors)) . = ALIGN(4); KEEP(*(.fini)) . = ALIGN(4); __fini_array_start = .; KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) __fini_array_end = .; KEEP (*crtbegin.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*crtend.o(.dtors)) . = ALIGN(4); _efixed = .; /* End of text section */ } > rom /* .ARM.exidx is sorted, so has to go in its own output section. */ PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } > rom PROVIDE_HIDDEN (__exidx_end = .); . = ALIGN(4); _etext = .; /* CAN message buffers must be in the first 64K of RAM */ .canMessage (NOLOAD) : { . = ALIGN(4); _sCanMessage = . ; *(.CanMessage .CanMessage.*) . = ALIGN(4); _eCanMessage = . ; } > ram /* DMA programming and write-back memory, here because they are volatile so we must't CRC them when we check for data corruption */ .dmaBuffers (NOLOAD) : { . = ALIGN(16); _sDmaBuffers = . ; *(.DmaBuffers .DmaBuffers.*) . = ALIGN(4); _eDmaBuffers = . ; } > ram .relocate : AT (_etext) { . = ALIGN(4); _srelocate = .; *(.ramfunc .ramfunc.*); *(.data .data.*); . = ALIGN(4); _erelocate = .; } > ram _firmware_crc = _etext + (_erelocate - _srelocate); /* We append the CRC32 to the binary file. This is its offset in memory. */ .bkupram (NOLOAD): { . = ALIGN(8); _sbkupram = .; *(.bkupram .bkupram.*); . = ALIGN(8); _ebkupram = .; } > bkupram .qspi (NOLOAD): { . = ALIGN(8); _sqspi = .; *(.qspi .qspi.*); . = ALIGN(8); _eqspi = .; } > qspi /* .bss section which is used for uninitialized data */ .bss (NOLOAD) : { . = ALIGN(4); _sbss = . ; _szero = .; *(.bss .bss.*) *(COMMON) . = ALIGN(4); _ebss = . ; _ezero = .; } > ram . = ALIGN(4); _end = . ; /* .stack_dummy section doesn't contains any symbols. It is only used for linker to calculate size of stack sections, and assign values to stack symbols later */ .stack_dummy : { *(.stack*) } > ram /* Set stack top to end of ram, and stack limit move down by * size of stack_dummy section */ __StackTop = ORIGIN(ram) + LENGTH(ram); __StackLimit = __StackTop - SIZEOF(.stack_dummy); PROVIDE(_sstack = __StackLimit); PROVIDE(_estack = __StackTop); }
尋找差異