SDK 1.3.0 release
See release notes for details Co-authored-by: Brian Cooke <bdscooke@gmail.com> Co-authored-by: Luke Wren <wren6991@gmail.com> Co-authored-by: Uri Shaked <uri@urishaked.com> Co-authored-by: Zapta <zapta@users.noreply.github.com> Co-authored-by: Andrew Scheller <andrew.scheller@raspberrypi.com> Co-authored-by: Liam Fraser <liam@raspberrypi.com> Co-authored-by: Gabriel Wang <embedded_zhuoran@Hotmail.com> Co-authored-by: Matias Silva <matita.martins@gmail.com> Co-authored-by: dp111 <19616418+dp111@users.noreply.github.com> Co-authored-by: Leonardo La Rocca <46094699+leoli51@users.noreply.github.com> Co-authored-by: Mahyar Koshkouei <mk@deltabeard.com> Co-authored-by: Brian Starkey <stark3y@gmail.com> Co-authored-by: Philip Howard <github@gadgetoid.com> Co-authored-by: Mike Causer <mcauser@gmail.com> Co-authored-by: Martino Facchin <m.facchin@arduino.cc> Co-authored-by: ZodiusInfuser <christopher.parrott2@gmail.com> Co-authored-by: Manuel Wick <manuel@matronix.de> Co-authored-by: Matias Silva <git@matiasilva.com> Co-authored-by: Robert Pafford <19439938+rjp5th@users.noreply.github.com> Co-authored-by: Alasdair Allan <alasdair@raspberrypi.com> Co-authored-by: Engineer_Will <646689853@qq.com> Co-authored-by: Garatronic <31109090+garatronic@users.noreply.github.com>
This commit is contained in:
@ -27,10 +27,10 @@ function(pico_generate_pio_header TARGET PIO)
|
||||
)
|
||||
add_dependencies(${TARGET} ${HEADER_GEN_TARGET})
|
||||
get_target_property(target_type ${TARGET} TYPE)
|
||||
if ("EXECUTABLE" STREQUAL "${target_type}")
|
||||
target_include_directories(${TARGET} PRIVATE ${HEADER_DIR})
|
||||
else()
|
||||
if ("INTERFACE_LIBRARY" STREQUAL "${target_type}")
|
||||
target_include_directories(${TARGET} INTERFACE ${HEADER_DIR})
|
||||
else()
|
||||
target_include_directories(${TARGET} PUBLIC ${HEADER_DIR})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@ -41,6 +41,6 @@ function(pico_add_uf2_output TARGET)
|
||||
endif()
|
||||
if (ELF2UF2_FOUND)
|
||||
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||
COMMAND ELF2UF2 ${TARGET}${CMAKE_EXECUTABLE_SUFFIX} ${TARGET}.uf2)
|
||||
COMMAND ELF2UF2 $<TARGET_FILE:${TARGET}> $<IF:$<BOOL:$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>>,$<TARGET_PROPERTY:${TARGET},OUTPUT_NAME>,$<TARGET_PROPERTY:${TARGET},NAME>>.uf2)
|
||||
endif()
|
||||
endfunction()
|
||||
|
@ -143,6 +143,9 @@ int read_and_check_elf32_ph_entries(FILE *in, const elf32_header &eh, const addr
|
||||
}
|
||||
if (eh.ph_num) {
|
||||
std::vector<elf32_ph_entry> entries(eh.ph_num);
|
||||
if (fseek(in, eh.ph_offset, SEEK_SET)) {
|
||||
return fail_read_error();
|
||||
}
|
||||
if (eh.ph_num != fread(&entries[0], sizeof(struct elf32_ph_entry), eh.ph_num, in)) {
|
||||
return fail_read_error();
|
||||
}
|
||||
|
@ -1945,9 +1945,9 @@ namespace yy {
|
||||
-52, 97, 132, -52, -52, -52, -52, 87, -52, -52,
|
||||
1, 5, 5, 5, 5, -52, 5, 5, -52, -52,
|
||||
-52, -52, 29, 118, 5, -52, 170, -52, -52, -52,
|
||||
107, 177, 1, 1, 1, 1, 1, 1, 1, -52,
|
||||
182, 177, 1, 1, 1, 1, 1, 1, 1, -52,
|
||||
-52, -51, -52, 177, 119, -52, -52, -52, -52, -52,
|
||||
-52, -52, 82, -52, -52, -52, 107, 107, 184, 184,
|
||||
-52, -52, 82, -52, -52, -52, 182, 182, 107, 107,
|
||||
-52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
|
||||
-52, -52, -52, -52, -52
|
||||
};
|
||||
@ -1979,9 +1979,9 @@ namespace yy {
|
||||
const short
|
||||
parser::yypgoto_[] =
|
||||
{
|
||||
-52, -52, -52, 98, -52, -52, -52, -7, -14, 168,
|
||||
-52, 99, 102, -52, 148, 25, -52, -52, -52, -52,
|
||||
-52, -52, -52, -52, 128, -52, 199
|
||||
-52, -52, -52, 102, -52, -52, -52, -7, -14, 172,
|
||||
-52, 99, 103, -52, 146, 25, -52, -52, -52, -52,
|
||||
-52, -52, -52, -52, 128, -52, 198
|
||||
};
|
||||
|
||||
const short
|
||||
@ -2014,8 +2014,8 @@ namespace yy {
|
||||
12, 13, 14, 15, 16, 17, 18, 19, 20, 149,
|
||||
163, 176, 142, 143, 144, 145, 146, 147, 148, 165,
|
||||
142, 143, 144, 145, 146, 147, 148, 142, 143, 144,
|
||||
145, 146, 147, 148, 142, 143, 135, 99, 146, 147,
|
||||
148, 125, 139, 131, 138, 36
|
||||
145, 146, 147, 148, 144, 145, 146, 147, 148, 125,
|
||||
135, 99, 139, 131, 36, 138
|
||||
};
|
||||
|
||||
const unsigned char
|
||||
@ -2040,8 +2040,8 @@ namespace yy {
|
||||
31, 32, 33, 34, 35, 36, 37, 38, 39, 7,
|
||||
52, 52, 10, 11, 12, 13, 14, 15, 16, 9,
|
||||
10, 11, 12, 13, 14, 15, 16, 10, 11, 12,
|
||||
13, 14, 15, 16, 10, 11, 98, 29, 14, 15,
|
||||
16, 53, 103, 75, 102, 6
|
||||
13, 14, 15, 16, 12, 13, 14, 15, 16, 53,
|
||||
98, 29, 103, 75, 6, 102
|
||||
};
|
||||
|
||||
const signed char
|
||||
|
@ -37,14 +37,14 @@ int main(int argc, char *argv[]) {
|
||||
for (; !res && i < argc; i++) {
|
||||
if (argv[i][0] != '-') break;
|
||||
if (argv[i] == std::string("-o")) {
|
||||
if (i++ < argc) {
|
||||
if (++i < argc) {
|
||||
format = argv[i];
|
||||
} else {
|
||||
std::cerr << "error: -o requires format value" << std::endl;
|
||||
res = 1;
|
||||
}
|
||||
} else if (argv[i] == std::string("-p")) {
|
||||
if (i++ < argc) {
|
||||
if (++i < argc) {
|
||||
options.emplace_back(argv[i]);
|
||||
} else {
|
||||
std::cerr << "error: -p requires parameter value" << std::endl;
|
||||
|
@ -124,8 +124,8 @@
|
||||
|
||||
|
||||
%left REVERSE
|
||||
%left MULTIPLY DIVIDE
|
||||
%left PLUS MINUS
|
||||
%left MULTIPLY DIVIDE
|
||||
%left AND OR XOR
|
||||
|
||||
%printer { yyo << "..."; } <*>;
|
||||
|
@ -127,7 +127,7 @@ void program::set_wrap(const yy::location &l) {
|
||||
throw syntax_error(l, msg.str());
|
||||
}
|
||||
if (instructions.empty()) {
|
||||
throw syntax_error(l, ".wrap cannot be pleaced before the first program instruction");
|
||||
throw syntax_error(l, ".wrap cannot be placed before the first program instruction");
|
||||
}
|
||||
wrap = resolvable_int(l, instructions.size() - 1);
|
||||
}
|
||||
|
@ -195,9 +195,12 @@ struct python_output : public output_format {
|
||||
if (arg2 & 0x8u) {
|
||||
invalid = true;
|
||||
} else {
|
||||
guts = "irq, " + std::to_string(arg2 & 7u);
|
||||
guts = "irq, ";
|
||||
auto irq = std::to_string(arg2 & 7u);
|
||||
if (arg2 & 0x10u) {
|
||||
guts += " rel";
|
||||
guts += "rel(" + irq + ")";
|
||||
} else {
|
||||
guts += irq;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -233,12 +236,11 @@ struct python_output : public output_format {
|
||||
std::string guts = "";
|
||||
if (arg1 & 4u) {
|
||||
op("pull");
|
||||
if (arg1 & 2u) guts = "ifempty";
|
||||
if (arg1 & 2u) guts = "ifempty, ";
|
||||
} else {
|
||||
op("push");
|
||||
if (arg1 & 2u) guts = "iffull";
|
||||
if (arg1 & 2u) guts = "iffull, ";
|
||||
}
|
||||
guts += ", ";
|
||||
guts += ((arg1 & 0x1u) ? "block" : "noblock");
|
||||
op_guts(guts);
|
||||
}
|
||||
@ -279,15 +281,17 @@ struct python_output : public output_format {
|
||||
op("irq");
|
||||
std::string guts;
|
||||
if (arg1 & 0x2u) {
|
||||
guts += "clear ";
|
||||
guts += "clear, ";
|
||||
} else if (arg1 & 0x1u) {
|
||||
guts += "wait ";
|
||||
guts += "wait, ";
|
||||
} else {
|
||||
guts += "nowait ";
|
||||
guts += "nowait, ";
|
||||
}
|
||||
guts += std::to_string(arg2 & 7u);
|
||||
auto irq = std::to_string(arg2 & 7u);
|
||||
if (arg2 & 0x10u) {
|
||||
guts += " rel";
|
||||
guts += "rel(" + irq + ")";
|
||||
} else {
|
||||
guts += irq;
|
||||
}
|
||||
op_guts(guts);
|
||||
}
|
||||
|
Reference in New Issue
Block a user