From 3af070672fe9a5138d66363de6f6596a37055712 Mon Sep 17 00:00:00 2001 From: Bob McWhirter Date: Wed, 21 Apr 2021 15:43:59 -0400 Subject: [PATCH 1/2] Checkpoint the makefile. --- Makefile | 41 +++++++++++++++++++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b0b5522 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +SHELL=/bin/bash + +clean: + rm -rf sources +prepare: + mkdir -p sources + mkdir -p sources/metadata + mkdir -p sources/files + mkdir -p sources/mcu + mkdir -p sources/svd + mkdir -p sources/.tmp + +metadata: prepare + wget http://stmcufinder.com/API/getFiles.php -O sources/metadata/files.json + wget http://stmcufinder.com/API/getMCUsForMCUFinderPC.php -O sources/metadata/mcus.json + +files: metadata + jq -r .Files[].URL < sources/metadata/files.json | wget -P sources/files/ -N -i - + +#mcu_dirs: metadata + #jq -r '.MCUs[] | select(.name|test("STM32.*")) | .name' < sources/metadata/mcus.json \ + #| sed 's/\(STM32[A-Z]*[0-9]*\)\(.*\)/\1/' \ + #| sort | uniq \ + #| awk '{print "sources/mcus/" tolower($0)}' \ + #| xargs mkdir -p + +svd: + git clone https://github.com/stm32-rs/stm32-rs.git ./sources/.tmp/stm32-rs + cd ./sources/.tmp/stm32-rs && make svdformat + +mcu_dirs: + ls -1 ./sources/.tmp/stm32-rs/svd/*.formatted | xargs basename | cut -f 1 -d . \ + | awk '{print "sources/mcu/" tolower($0)}' \ + | xargs mkdir -p + + ls -1 ./sources/.tmp/stm32-rs/svd/*.formatted | xargs basename | cut -f 1 -d . \ + | awk '{print "./sources/.tmp/stm32-rs/svd/" tolower($0) ".svd.formatted" " sources/mcu/" tolower($0) "/" tolower($0) ".svd" }' \ + | tr ' ' '\n' \ + | xargs -n2 cp + + diff --git a/README.md b/README.md index 8f58037..5f39b4e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ wget http://stmcufinder.com/API/getFiles.php -O sources/files.json wget http://stmcufinder.com/API/getMCUsForMCUFinderPC.php -O sources/mcus.json -jq -r .Files[].URL < sources/files.json | wget -N -i - \ No newline at end of file +jq -r .Files[].URL < sources/files.json | wget -P sources/ -N -i - From 660f64c6a52b57eee2dbbda86ea9172abbbd8a97 Mon Sep 17 00:00:00 2001 From: Bob McWhirter Date: Thu, 22 Apr 2021 16:28:27 -0400 Subject: [PATCH 2/2] Adjust to pull the SVDs. And expect svd2rust to be sibling to -metapac. --- Makefile | 40 +++++++++++++++++++--------------------- extract-all.sh | 6 +++--- transform.yaml | 31 +++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 transform.yaml diff --git a/Makefile b/Makefile index b0b5522..4d63da6 100644 --- a/Makefile +++ b/Makefile @@ -2,39 +2,37 @@ SHELL=/bin/bash clean: rm -rf sources -prepare: - mkdir -p sources - mkdir -p sources/metadata - mkdir -p sources/files - mkdir -p sources/mcu - mkdir -p sources/svd - mkdir -p sources/.tmp + rm -rf tmp -metadata: prepare +metadata: sources/metadata/files.json sources/metadata/mcus.json + +sources/metadata/files.json: + mkdir -p sources/metadata wget http://stmcufinder.com/API/getFiles.php -O sources/metadata/files.json + +sources/metadata/mcus.json: + mkdir -p sources/metadata wget http://stmcufinder.com/API/getMCUsForMCUFinderPC.php -O sources/metadata/mcus.json -files: metadata +sources/files: metadata + mkdir -p sources/files jq -r .Files[].URL < sources/metadata/files.json | wget -P sources/files/ -N -i - -#mcu_dirs: metadata - #jq -r '.MCUs[] | select(.name|test("STM32.*")) | .name' < sources/metadata/mcus.json \ - #| sed 's/\(STM32[A-Z]*[0-9]*\)\(.*\)/\1/' \ - #| sort | uniq \ - #| awk '{print "sources/mcus/" tolower($0)}' \ - #| xargs mkdir -p +svd: sources/.tmp/stm32-rs + mkdir -p sources/svd + ls -1 ./sources/.tmp/stm32-rs/svd/*.formatted | xargs basename | cut -f 1 -d . \ + | awk '{print "sources/.tmp/stm32-rs/svd/" $$0 ".svd.formatted" " " "sources/svd/" $$0 ".svd"}' \ + | xargs -n2 cp -svd: +sources/.tmp/stm32-rs: + rm -rf ./sources/.tmp/stm32-rs git clone https://github.com/stm32-rs/stm32-rs.git ./sources/.tmp/stm32-rs cd ./sources/.tmp/stm32-rs && make svdformat -mcu_dirs: - ls -1 ./sources/.tmp/stm32-rs/svd/*.formatted | xargs basename | cut -f 1 -d . \ - | awk '{print "sources/mcu/" tolower($0)}' \ - | xargs mkdir -p +mcu_dirs: svd metadata ls -1 ./sources/.tmp/stm32-rs/svd/*.formatted | xargs basename | cut -f 1 -d . \ - | awk '{print "./sources/.tmp/stm32-rs/svd/" tolower($0) ".svd.formatted" " sources/mcu/" tolower($0) "/" tolower($0) ".svd" }' \ + | awk '{print "./sources/.tmp/stm32-rs/svd/" $$0 ".svd.formatted" " sources/mcu/" $$0 "/" $$0 ".svd" }' \ | tr ' ' '\n' \ | xargs -n2 cp diff --git a/extract-all.sh b/extract-all.sh index 2e04fde..e3a370e 100755 --- a/extract-all.sh +++ b/extract-all.sh @@ -3,15 +3,15 @@ peri=$1 mkdir -p tmp/$peri -cargo build --release --manifest-path ../svd2rust/Cargo.toml +cargo build --release --manifest-path ../../svd2rust/Cargo.toml for f in `ls sources/svd`; do f=${f#"stm32"} f=${f%".svd"} echo -n processing $f ... - RUST_LOG=info ../svd2rust/target/release/svd4rust extract-peripheral --svd sources/svd/stm32$f.svd --transform transform.yaml --peripheral $peri > tmp/$peri/$f.yaml 2> tmp/$peri/$f.yaml.out + RUST_LOG=info ../../svd2rust/target/release/svd4rust extract-peripheral --svd sources/svd/stm32$f.svd --transform transform.yaml --peripheral $peri > tmp/$peri/$f.yaml 2> tmp/$peri/$f.yaml.out if [ $? -ne 0 ]; then - mv tmp/$peri/$f.yaml.out tmp/$peri/$f.yaml + rm tmp/$peri/$f.yaml echo FAIL else rm tmp/$peri/$f.yaml.out diff --git a/transform.yaml b/transform.yaml new file mode 100644 index 0000000..e2a2e66 --- /dev/null +++ b/transform.yaml @@ -0,0 +1,31 @@ +transforms: + - MergeEnums: + from: CCMR\d_Input_CC\dS + to: CCMR_Input_CCS + check: Layout + + # Remove digits from enum names + - MergeEnums: + from: ([^\d]*)[\d]*([^\d]*)[\d]*([^\d]*)[\d]* + to: $1$2$3 + skip_unmergeable: true + + - MakeFieldArray: + fieldsets: .* + from: ([A-Z]+)\d+ + to: $1 + allow_cursed: true + - MakeRegisterArray: + blocks: .* + from: ([A-Z]+)\d+ + to: $1 + - MergeEnums: + from: '[HL](IFCR|ISR)_(.*)' + to: $2 + - MergeFieldsets: + from: '[HL](IFCR|ISR)' + to: $1 + - MakeRegisterArray: + blocks: .* + from: '[HL](IFCR|ISR)' + to: $1