/*本链接文件 为免费自带 实例lsl, 如有侵权,请告知*/

/*理解不透彻,还请多担待,多交流 -- (手动狗头)*/

/*字数太多,无法上传,分上下两部分,下一篇介绍 /*sections 布局设计,包括数据存放位置,程序存放位置等信息*/ */

/*定义 core0 的 上下文空间,用户栈空间,中断空间*/

#define LCF_CSA0_SIZE 8k

#define LCF_USTACK0_SIZE 2k

#define LCF_ISTACK0_SIZE 1k

/*定义 core1 的 上下文空间,用户栈空间,中断空间*/

#define LCF_CSA1_SIZE 8k

#define LCF_USTACK1_SIZE 2k

#define LCF_ISTACK1_SIZE 1k

/*定义 core2 的 上下文空间,用户栈空间,中断空间*/

#define LCF_CSA2_SIZE 8k

#define LCF_USTACK2_SIZE 2k

#define LCF_ISTACK2_SIZE 1k

/*定义 core3 的 上下文空间,用户栈空间,中断空间*/

#define LCF_CSA3_SIZE 8k

#define LCF_USTACK3_SIZE 2k

#define LCF_ISTACK3_SIZE 1k

/*定义 core4 的 上下文空间,用户栈空间,中断空间*/

#define LCF_CSA4_SIZE 8k

#define LCF_USTACK4_SIZE 2k

#define LCF_ISTACK4_SIZE 1k

/*定义 core5 的 上下文空间,用户栈空间,中断空间*/

#define LCF_CSA5_SIZE 8k

#define LCF_USTACK5_SIZE 2k

#define LCF_ISTACK5_SIZE 1k

/*定义堆空间*/

#define LCF_HEAP_SIZE  4k

/*定义CPU cores*/

#define LCF_CPU0 0

#define LCF_CPU1 1

#define LCF_CPU2 2

#define LCF_CPU3 3

#define LCF_CPU4 4

#define LCF_CPU5 5

/*Un comment one of the below statements to enable CpuX DMI RAM to hold global variables*/

#define LCF_DEFAULT_HOST LCF_CPU0

/*#define LCF_DEFAULT_HOST LCF_CPU1*/

/*#define LCF_DEFAULT_HOST LCF_CPU2*/

/*#define LCF_DEFAULT_HOST LCF_CPU3*/

/*#define LCF_DEFAULT_HOST LCF_CPU4*/

/*#define LCF_DEFAULT_HOST LCF_CPU5*/

/* Data Scratch Memory core5 数据ram 大小和 起始 位置*/

#define LCF_DSPR5_START 0x10000000

#define LCF_DSPR5_SIZE  96k

/* Data Scratch Memory core4 数据ram 大小和 起始 位置*/

#define LCF_DSPR4_START 0x30000000

#define LCF_DSPR4_SIZE  96k

/* Data Scratch Memory core3 数据ram 大小和 起始 位置*/

#define LCF_DSPR3_START 0x40000000

#define LCF_DSPR3_SIZE  96k

/* Data Scratch Memory core2 数据ram 大小和 起始 位置*/

#define LCF_DSPR2_START 0x50000000

#define LCF_DSPR2_SIZE  96k

/* Data Scratch Memory core1 数据ram 大小和 起始 位置*/

#define LCF_DSPR1_START 0x60000000

#define LCF_DSPR1_SIZE  240k

/* Data Scratch Memory core0 数据ram 大小和 起始 位置*/

#define LCF_DSPR0_START 0x70000000

#define LCF_DSPR0_SIZE  240k

/*core5 上下文偏移地址*/

/*96 - 1 - 8 = 87 = 87 * 1024 = 0x00015C00*/

#define LCF_CSA5_OFFSET     (LCF_DSPR5_SIZE - 1k - LCF_CSA5_SIZE)

/*core5 中断栈区偏移地址*/

/*87*1024 - 256 - 1*1024 = 0x00015700*/

#define LCF_ISTACK5_OFFSET  (LCF_CSA5_OFFSET - 256 - LCF_ISTACK5_SIZE)

/*core5 用户栈区偏移地址*/

/*87*1024 - 256 - 1*1024 - 256 - 2*1024 = 0x00014E00*/

#define LCF_USTACK5_OFFSET  (LCF_ISTACK5_OFFSET - 256 - LCF_USTACK5_SIZE)

/*同core5 计算*/

#define LCF_CSA4_OFFSET     (LCF_DSPR4_SIZE - 1k - LCF_CSA4_SIZE)

#define LCF_ISTACK4_OFFSET  (LCF_CSA4_OFFSET - 256 - LCF_ISTACK4_SIZE)

#define LCF_USTACK4_OFFSET  (LCF_ISTACK4_OFFSET - 256 - LCF_USTACK4_SIZE)

/*同core5 计算*/

#define LCF_CSA3_OFFSET     (LCF_DSPR3_SIZE - 1k - LCF_CSA3_SIZE)

#define LCF_ISTACK3_OFFSET  (LCF_CSA3_OFFSET - 256 - LCF_ISTACK3_SIZE)

#define LCF_USTACK3_OFFSET  (LCF_ISTACK3_OFFSET - 256 - LCF_USTACK3_SIZE)

/*同core5 计算*/

#define LCF_CSA2_OFFSET     (LCF_DSPR2_SIZE - 1k - LCF_CSA2_SIZE)

#define LCF_ISTACK2_OFFSET  (LCF_CSA2_OFFSET - 256 - LCF_ISTACK2_SIZE)

#define LCF_USTACK2_OFFSET  (LCF_ISTACK2_OFFSET - 256 - LCF_USTACK2_SIZE)

/*同core5 计算*/

#define LCF_CSA1_OFFSET     (LCF_DSPR1_SIZE - 1k - LCF_CSA1_SIZE)

#define LCF_ISTACK1_OFFSET  (LCF_CSA1_OFFSET - 256 - LCF_ISTACK1_SIZE)

#define LCF_USTACK1_OFFSET  (LCF_ISTACK1_OFFSET - 256 - LCF_USTACK1_SIZE)

/*同core5 计算*/

#define LCF_CSA0_OFFSET     (LCF_DSPR0_SIZE - 1k - LCF_CSA0_SIZE)

#define LCF_ISTACK0_OFFSET  (LCF_CSA0_OFFSET - 256 - LCF_ISTACK0_SIZE)

#define LCF_USTACK0_OFFSET  (LCF_ISTACK0_OFFSET - 256 - LCF_USTACK0_SIZE)

/*定义堆区偏移地址 e.g.core5  0x00014E00 - 4*1024 = 0x00013E00*/

#define LCF_HEAP0_OFFSET    (LCF_USTACK0_OFFSET - LCF_HEAP_SIZE)

#define LCF_HEAP1_OFFSET    (LCF_USTACK1_OFFSET - LCF_HEAP_SIZE)

#define LCF_HEAP2_OFFSET    (LCF_USTACK2_OFFSET - LCF_HEAP_SIZE)

#define LCF_HEAP3_OFFSET    (LCF_USTACK3_OFFSET - LCF_HEAP_SIZE)

#define LCF_HEAP4_OFFSET    (LCF_USTACK4_OFFSET - LCF_HEAP_SIZE)

#define LCF_HEAP5_OFFSET    (LCF_USTACK5_OFFSET - LCF_HEAP_SIZE)

/*定义各个核中断向量表起始地址,由此可见中断向量表起始地址都在每个core的Program flash空间的倒数8k的位置*/

#define LCF_INTVEC0_START 0x802FE000

#define LCF_INTVEC1_START 0x805FE000

#define LCF_INTVEC2_START 0x808FE000

#define LCF_INTVEC3_START 0x80BFE000

#define LCF_INTVEC4_START 0x80EFE000

#define LCF_INTVEC5_START 0x80FFE000

/*定义各个核trap(陷阱)向量表的起始位置,由此可见除了core0在pflash隔了100个bytes位起始位置,其他core 都是 pflash的起始位置*/

#define LCF_TRAPVEC0_START 0x80000100

#define LCF_TRAPVEC1_START 0x80300000

#define LCF_TRAPVEC2_START 0x80600000

#define LCF_TRAPVEC3_START 0x80900000

#define LCF_TRAPVEC4_START 0x80C00000

#define LCF_TRAPVEC5_START 0x80F00000

/*定义各个cores 起始指针位置(允许cache访问)*/

#define LCF_STARTPTR_CPU0 0x80000000

#define LCF_STARTPTR_CPU1 0x80300100

#define LCF_STARTPTR_CPU2 0x80600100

#define LCF_STARTPTR_CPU3 0x80900100

#define LCF_STARTPTR_CPU4 0x80C00100

#define LCF_STARTPTR_CPU5 0x80F00100

/*定义各个cores 起始指针位置(不允许cache访问)*/

#define LCF_STARTPTR_NC_CPU0 0xA0000000

#define LCF_STARTPTR_NC_CPU1 0xA0300100

#define LCF_STARTPTR_NC_CPU2 0xA0600100

#define LCF_STARTPTR_NC_CPU3 0xA0900100

#define LCF_STARTPTR_NC_CPU4 0xA0C00100

#define LCF_STARTPTR_NC_CPU5 0xA0F00100

/*中断向量表 和 trap 向量表*/

#define INTTAB0             (LCF_INTVEC0_START)

#define INTTAB1             (LCF_INTVEC1_START)

#define INTTAB2             (LCF_INTVEC2_START)

#define INTTAB3             (LCF_INTVEC3_START)

#define INTTAB4             (LCF_INTVEC4_START)

#define INTTAB5             (LCF_INTVEC5_START)

#define TRAPTAB0            (LCF_TRAPVEC0_START)

#define TRAPTAB1            (LCF_TRAPVEC1_START)

#define TRAPTAB2            (LCF_TRAPVEC2_START)

#define TRAPTAB3            (LCF_TRAPVEC3_START)

#define TRAPTAB4            (LCF_TRAPVEC4_START)

#define TRAPTAB5            (LCF_TRAPVEC5_START)

/*定义reset位置位core0的起始指针位置(不运行cache访问)*/

#define RESET LCF_STARTPTR_NC_CPU0

#include "tc1v1_6_2.lsl"

// Specify a multi-core processor environment (mpe)

/*多核环境 芯片 Tc397*/

processor mpe

{

derivative = tc39;

}

/*各个核架构定义*/

derivative tc39

{

core tc0

{

architecture = TC1V1.6.2;

space_id_offset = 100;            // add 100 to all space IDs in the architecture definition

copytable_space = vtc:linear;     // use the copy table in the virtual core for 'bss' and initialized data sections

}

core tc1 // core 1 TC16E

{

architecture = TC1V1.6.2;

space_id_offset = 200;            // add 200 to all space IDs in the architecture definition

copytable_space = vtc:linear;     // use the copy table in the virtual core for 'bss' and initialized data sections

}

core tc2 // core 2 TC16P

{

architecture = TC1V1.6.2;

space_id_offset = 300;            // add 300 to all space IDs in the architecture definition

copytable_space = vtc:linear;     // use the copy table in the virtual core for 'bss' and initialized data sections

}

core tc3 // core 3 TC16P

{

architecture = TC1V1.6.2;

space_id_offset = 400;            // add 300 to all space IDs in the architecture definition

copytable_space = vtc:linear;     // use the copy table in the virtual core for 'bss' and initialized data sections

}

core tc4 // core 4 TC16P

{

architecture = TC1V1.6.2;

space_id_offset = 500;            // add 300 to all space IDs in the architecture definition

copytable_space = vtc:linear;     // use the copy table in the virtual core for 'bss' and initialized data sections

}

core tc5 // core 5 TC16P

{

architecture = TC1V1.6.2;

space_id_offset = 600;            // add 300 to all space IDs in the architecture definition

copytable_space = vtc:linear;     // use the copy table in the virtual core for 'bss' and initialized data sections

}

core vtc

{

architecture = TC1V1.6.2;

import tc0;                     // add all address spaces of core tc0 to core vtc for linking and locating

import tc1;                     //                                tc1

import tc2;                     //                                tc2

import tc3;                     //                                tc3

import tc4;                     //                                tc4

import tc5;                     //                                tc5

}

/*内部数据bus定义*/

bus sri

{

mau = 8;    // 最小地址单位

width = 32; // 地址行数

/* map关键字指定此总线如何映射到另一个总线 */

// map shared addresses one-to-one to real cores and virtual cores

/*

dest        参数指定目的地址。这可以是一个总线或另一个地址空间(仅适用于空间到空间的映射)。这个参数是必需的。

src_offset  参数指定源地址的偏移量。与size一起,它指定了映射的地址范围。缺省情况下,源偏移量为0x0000。

size        参数指定被映射的地址数量。这个参数是必需的。

dest_offset 参数指定指定地址范围映射到的目标地址的位置。缺省情况下,目的偏移量为0x0000。

*/

map (dest=bus:tc0:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

map (dest=bus:tc1:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

map (dest=bus:tc2:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

map (dest=bus:tc3:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

map (dest=bus:tc4:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

map (dest=bus:tc5:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

map (dest=bus:vtc:fpi_bus, src_offset=0, dest_offset=0, size=0xc0000000);

}

/*数据*/

memory dsram5 // Data Scratch Pad Ram

{

mau = 8;

size = 96k;

type = ram;

/*priority:

如果定义内存,可以使用关键字priority和exec_priority在映射上设置定位优先级。

这些优先级的值是相对的,这意味着它们增加了内存的优先级。

内存上的优先级设置适用于通过内存映射可达的所有地址空间区域,

而映射上的优先级设置仅适用于通过映射可达的地址空间区域。

优先级最高的内存映射在定位时优先考虑。

若要仅为非可执行(数据)部分设置优先级,请添加具有所需值的priority关键字,

并将exec_priority设置为0。要仅为可执行(代码)部分设置优先级,

只需将exec_priority关键字设置为所需的值。

*/

map (dest=bus:tc5:fpi_bus, dest_offset=0xd0000000, size=96k, priority=8);

map (dest=bus:sri, dest_offset=0x10000000, size=96k);

}

/*程序*/

memory psram5 // Program Scratch Pad Ram

{

mau = 8;

size = 64k;

type = ram;

map (dest=bus:tc5:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);

map (dest=bus:sri, dest_offset=0x10100000, size=64k);

}

memory dsram4 // Data Scratch Pad Ram

{

mau = 8;

size = 96k;

type = ram;

map (dest=bus:tc4:fpi_bus, dest_offset=0xd0000000, size=96k, priority=8);

map (dest=bus:sri, dest_offset=0x30000000, size=96k);

}

memory psram4 // Program Scratch Pad Ram

{

mau = 8;

size = 64k;

type = ram;

map (dest=bus:tc4:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);

map (dest=bus:sri, dest_offset=0x30100000, size=64k);

}

memory dsram3 // Data Scratch Pad Ram

{

mau = 8;

size = 96k;

type = ram;

map (dest=bus:tc3:fpi_bus, dest_offset=0xd0000000, size=96k, priority=8);

map (dest=bus:sri, dest_offset=0x40000000, size=96k);

}

memory psram3 // Program Scratch Pad Ram

{

mau = 8;

size = 64k;

type = ram;

map (dest=bus:tc3:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);

map (dest=bus:sri, dest_offset=0x40100000, size=64k);

}

memory dsram2 // Data Scratch Pad Ram

{

mau = 8;

size = 96k;

type = ram;

map (dest=bus:tc2:fpi_bus, dest_offset=0xd0000000, size=96k, priority=8);

map (dest=bus:sri, dest_offset=0x50000000, size=96k);

}

memory psram2 // Program Scratch Pad Ram

{

mau = 8;

size = 64k;

type = ram;

map (dest=bus:tc2:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);

map (dest=bus:sri, dest_offset=0x50100000, size=64k);

}

memory dsram1 // Data Scratch Pad Ram

{

mau = 8;

size = 240k;

type = ram;

map (dest=bus:tc1:fpi_bus, dest_offset=0xd0000000, size=240k, priority=8);

map (dest=bus:sri, dest_offset=0x60000000, size=240k);

}

memory psram1 // Program Scratch Pad Ram

{

mau = 8;

size = 64k;

type = ram;

map (dest=bus:tc1:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);

map (dest=bus:sri, dest_offset=0x60100000, size=64k);

}

memory dsram0 // Data Scratch Pad Ram

{

mau = 8;

size = 240k;

type = ram;

map (dest=bus:tc0:fpi_bus, dest_offset=0xd0000000, size=240k, priority=8);

map (dest=bus:sri, dest_offset=0x70000000, size=240k);

}

memory psram0 // Program Scratch Pad Ram

{

mau = 8;

size = 64k;

type = ram;

map (dest=bus:tc0:fpi_bus, dest_offset=0xc0000000, size=64k, priority=8);

map (dest=bus:sri, dest_offset=0x70100000, size=64k);

}

memory pfls0

{

mau = 8;

size = 3M;

type = rom;

map     cached (dest=bus:sri, dest_offset=0x80000000,           size=3M);

map not_cached (dest=bus:sri, dest_offset=0xa0000000, reserved, size=3M);

}

memory pfls1

{

mau = 8;

size = 3M;

type = rom;

map     cached (dest=bus:sri, dest_offset=0x80300000,           size=3M);

map not_cached (dest=bus:sri, dest_offset=0xa0300000, reserved, size=3M);

}

memory pfls2

{

mau = 8;

size = 3M;

type = rom;

map     cached (dest=bus:sri, dest_offset=0x80600000,           size=3M);

map not_cached (dest=bus:sri, dest_offset=0xa0600000, reserved, size=3M);

}

memory pfls3

{

mau = 8;

size = 3M;

type = rom;

map     cached (dest=bus:sri, dest_offset=0x80900000,           size=3M);

map not_cached (dest=bus:sri, dest_offset=0xa0900000, reserved, size=3M);

}

memory pfls4

{

mau = 8;

size = 3M;

type = rom;

map     cached (dest=bus:sri, dest_offset=0x80c00000,           size=3M);

map not_cached (dest=bus:sri, dest_offset=0xa0c00000, reserved, size=3M);

}

memory pfls5

{

mau = 8;

size = 1M;

type = rom;

map     cached (dest=bus:sri, dest_offset=0x80f00000,           size=1M);

map not_cached (dest=bus:sri, dest_offset=0xa0f00000, reserved, size=1M);

}

memory dfls0

{

mau = 8;

size = 1M;

type = reserved nvram;

map (dest=bus:sri, dest_offset=0xaf000000, size=1M  );

}

memory ucb

{

mau = 8;

size = 24k;

type = rom;

map (dest=bus:sri, dest_offset=0xaf400000, reserved, size=24k);

}

memory cpu0_dlmu

{

mau = 8;

size = 64k;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90000000,           size=64k);

map not_cached (dest=bus:sri, dest_offset=0xb0000000, reserved, size=64k);

}

memory cpu1_dlmu

{

mau = 8;

size = 64k;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90010000,           size=64k);

map not_cached (dest=bus:sri, dest_offset=0xb0010000, reserved, size=64k);

}

memory cpu2_dlmu

{

mau = 8;

size = 64k;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90020000,           size=64k);

map not_cached (dest=bus:sri, dest_offset=0xb0020000, reserved, size=64k);

}

memory cpu3_dlmu

{

mau = 8;

size = 64k;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90030000,           size=64k);

map not_cached (dest=bus:sri, dest_offset=0xb0030000, reserved, size=64k);

}

memory lmuram

{

mau = 8;

size = 768K;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90040000,           size=768K);

map not_cached (dest=bus:sri, dest_offset=0xb0040000, reserved, size=768K);

}

memory cpu4_dlmu

{

mau = 8;

size = 64k;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90100000,           size=64k);

map not_cached (dest=bus:sri, dest_offset=0xb0100000, reserved, size=64k);

}

memory cpu5_dlmu

{

mau = 8;

size = 64k;

type = ram;

map     cached (dest=bus:sri, dest_offset=0x90110000,           size=64k);

map not_cached (dest=bus:sri, dest_offset=0xb0110000, reserved, size=64k);

}

memory edmem

{

mau = 8;

size = 4M;

type = ram;

map (dest=bus:sri, dest_offset=0x99000000, size=4M);

map (dest=bus:sri, dest_offset=0xb9000000, reserved, size=4M);

}

/*section 设置*/

#if (__VERSION__ >= 6003)

section_setup :vtc:linear

{

heap "heap" (min_size = (1k), fixed, align = 8);    /* 最小堆区1k, 字节对齐8字节 */

}

#endif

/*

软件运行起始地址标志位

在程序中的入口函数

void _START(void)

{

Ifx_Ssw_jumpToFunction(__StartUpSoftware);

}

然后运行到函数Ifx_Ssw_jumpToFunction(__StartUpSoftware) 进行初始化

*/

section_setup :vtc:linear

{

start_address

(

symbol = "_START"

);

}

/*

min_size语句必须存在。

min_size值必须大于等于1。

最多可以指定一个align语句,一个grow语句和一个threads语句。

每个堆栈定义可以有一个或多个entry_points语句用于堆栈评估。symbol_name相对应编译器生成的.CALLS指令中名称

*/

section_setup :vtc:linear

{

stack "ustack_tc0" (min_size = 1k, fixed, align = 8);

stack "istack_tc0" (min_size = 1k, fixed, align = 8);

stack "ustack_tc1" (min_size = 1k, fixed, align = 8);

stack "istack_tc1" (min_size = 1k, fixed, align = 8);

stack "ustack_tc2" (min_size = 1k, fixed, align = 8);

stack "istack_tc2" (min_size = 1k, fixed, align = 8);

stack "ustack_tc3" (min_size = 1k, fixed, align = 8);

stack "istack_tc3" (min_size = 1k, fixed, align = 8);

stack "ustack_tc4" (min_size = 1k, fixed, align = 8);

stack "istack_tc4" (min_size = 1k, fixed, align = 8);

stack "ustack_tc5" (min_size = 1k, fixed, align = 8);

stack "istack_tc5" (min_size = 1k, fixed, align = 8);

}

/*Section setup for the copy table*/

/*

copy_unit是由启动代码移动数据的MAUs大小定义的。

dest语句只在启动代码初始化内存时被另一个没有ROM访问权限的处理器使用。

space_name是指一个已定义的地址空间。

*/

section_setup :vtc:linear

{

copytable

(

align = 4,

dest = linear,

table

{

symbol = "_lc_ub_table_tc0";

space = :tc0:linear, :tc0:abs24, :tc0:abs18, :tc0:csa;

},

table

{

symbol = "_lc_ub_table_tc1";

space = :tc1:linear, :tc1:abs24, :tc1:abs18, :tc1:csa;

},

table

{

symbol = "_lc_ub_table_tc2";

space = :tc2:linear, :tc2:abs24, :tc2:abs18, :tc2:csa;

},

table

{

symbol = "_lc_ub_table_tc3";

space = :tc3:linear, :tc3:abs24, :tc3:abs18, :tc3:csa;

},

table

{

symbol = "_lc_ub_table_tc4";

space = :tc4:linear, :tc4:abs24, :tc4:abs18, :tc4:csa;

},

table

{

symbol = "_lc_ub_table_tc5";

space = :tc5:linear, :tc5:abs24, :tc5:abs18, :tc5:csa;

}

);

}

作者:Z-ONE_00751242454
文章来源:上汽零束SOA开发者论坛 
原文链接:https://bbs.z-onesoft.com/omp/community/front/api/page/mainTz?articleId=7745

Aurix 多核链接文件 lsl --- 上篇相关推荐

  1. 英飞凌 AURIX TC3XX 系列单片机的链接文件

    前言 程序在完成编译后,每个".c"文件会生成".o"目标文件,此时代码无法通过目标文件运行,还需要通过链接文件为每个目标文件和系统标准库等链接起来,根据链接文 ...

  2. python下载文件保存_python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  3. 第2周第4课:set_uid、set_gid、stick_bit、软(硬)链接文件

    2019独角兽企业重金招聘Python工程师标准>>> 2.18 特殊权限set_uid 权限的标准写法是4位数,第1位表示特殊权限. 该权限仅针对二进制可执行文件,使文件在执行阶段 ...

  4. Windows下Libvirt Java API使用教程(三)- TLS认证访问和动态链接文件依赖

    之前已经介绍过了libvirt api的上手使用方式: <Windows下Libvirt Java API使用教程(二)- 接口使用说明> <Windows下Libvirt Java ...

  5. 纯前端下载pdf链接文件,而不是打开预览的解决方案

    纯前端下载pdf链接文件,而不是打开预览的解决方案 参考文章: (1)纯前端下载pdf链接文件,而不是打开预览的解决方案 (2)https://www.cnblogs.com/jackson-yqj/ ...

  6. python3下载文件-python 3.3 下载固定链接文件并保存的方法

    python 3.3 下载固定链接文件并保存. import urllib.request print ("downloading with urllib") url = 'htt ...

  7. 【Android 逆向】Linux 文件分类 ( 普通文件 | 目录文件 | 链接文件 | 字符设备文件 | 管道文件 | 块设备文件 )

    文章目录 一.Linux 文件分类 1.普通文件 2.链接文件 3.字符设备文件 4.管道文件 5.块设备文件 一.Linux 文件分类 Linux 文件分类 : " - " 表示 ...

  8. visual studio 添加链接文件

    本文转载http://blog.163.com/zhongpenghua@yeah/blog/static/87727415201282432345613/ 那个有个箭头的文件就是链接文件了,添加方法 ...

  9. html链接文件不可用,PPT2013如何解决链接文件失效

    工作中在做PPT时,经常需要添加一些视频或音频之类的链接文件.而我们拷贝到另外一台电脑上的时候,由于这些链接文件的路径变了,这些链接也就失效了.遇到链接失效怎么办?下面学习啦给大家分享解决链接失效的方 ...

  10. linux 常用命令整理----链接文件

    ln 用法:ln -s /etc/issue /tmp/issue.soft ln /etc/issue /etc/issue.hard 如果加-s为软链接,类似于windows的快捷方式 不加-s为 ...

最新文章

  1. 2022-2028年中国输送胶管行业市场全景调查及投资前景趋势报告
  2. ueditor html显示图片,百度ueditor编辑器上传图片后img标签的title、alt属性优化简单方法...
  3. 【初探HTML本相】道之真谛不过自然,html标签脱俗还真
  4. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...
  5. VMX虚拟机环境下CentOS/Linux扩展磁盘空间,并且增加HOME目录的大小!
  6. 我的世界1.8.9无需正版的服务器,我的世界1period;8period;9服务器纯洁服地址 | 手游网游页游攻略大全...
  7. SAP License:赛锐信息访谈启示录(一)
  8. QQ域名拦截检测工具(含源码)
  9. 大智慧公式系统:条件选股之基本技巧
  10. 低版本VC2010打开高版本VC2012的方法
  11. go与python的前景_golang程序员前景怎么样?Python、Java、go语言的优势互比
  12. 0910期即将上市:优秀产品三部曲
  13. 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  14. 交换机级联后网速在底层交换机变慢的问题
  15. 成功安装python后、在dos命令行窗口中-python在WIN运行时去掉DOS窗口显示的方法
  16. 数据库字符集utf8和utf8mb4的详细区别
  17. Python爬虫实战——签名软件设计(一)python POST模拟网页按钮点击
  18. Vue.js 中created方法的作用【学习】
  19. Mac M1配置Apache Tomcat
  20. 今日分享 不可思议的人体

热门文章

  1. 文墨绘学呵护那一点点光
  2. springboot 多模块 Found multiple @SpringBootConfiguration annotated classes
  3. leetcode简单之1076.项目员工II
  4. CentOS7中怎样设置静态IP
  5. html5 canvas背景特效,HTML5 Canvas炫酷背景动画特效
  6. Excel中常用技巧
  7. RPG游戏制作-03-人物行走及A*寻路算法
  8. Cascading介绍
  9. nginx 的proxy 时间讲解
  10. Bolt: Anonymous Payment Channels for Decentralized Currencies 学习笔记