Adjust to pull the SVDs.

And expect svd2rust to be sibling to -metapac.
This commit is contained in:
Bob McWhirter 2021-04-22 16:28:27 -04:00
parent 3af070672f
commit 660f64c6a5
3 changed files with 53 additions and 24 deletions

View File

@ -2,39 +2,37 @@ SHELL=/bin/bash
clean: clean:
rm -rf sources rm -rf sources
prepare: rm -rf tmp
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 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 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 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 - jq -r .Files[].URL < sources/metadata/files.json | wget -P sources/files/ -N -i -
#mcu_dirs: metadata svd: sources/.tmp/stm32-rs
#jq -r '.MCUs[] | select(.name|test("STM32.*")) | .name' < sources/metadata/mcus.json \ mkdir -p sources/svd
#| sed 's/\(STM32[A-Z]*[0-9]*\)\(.*\)/\1/' \ ls -1 ./sources/.tmp/stm32-rs/svd/*.formatted | xargs basename | cut -f 1 -d . \
#| sort | uniq \ | awk '{print "sources/.tmp/stm32-rs/svd/" $$0 ".svd.formatted" " " "sources/svd/" $$0 ".svd"}' \
#| awk '{print "sources/mcus/" tolower($0)}' \ | xargs -n2 cp
#| xargs mkdir -p
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 git clone https://github.com/stm32-rs/stm32-rs.git ./sources/.tmp/stm32-rs
cd ./sources/.tmp/stm32-rs && make svdformat cd ./sources/.tmp/stm32-rs && make svdformat
mcu_dirs: mcu_dirs: svd metadata
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 . \ 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' \ | tr ' ' '\n' \
| xargs -n2 cp | xargs -n2 cp

View File

@ -3,15 +3,15 @@
peri=$1 peri=$1
mkdir -p tmp/$peri 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 for f in `ls sources/svd`; do
f=${f#"stm32"} f=${f#"stm32"}
f=${f%".svd"} f=${f%".svd"}
echo -n processing $f ... 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 if [ $? -ne 0 ]; then
mv tmp/$peri/$f.yaml.out tmp/$peri/$f.yaml rm tmp/$peri/$f.yaml
echo FAIL echo FAIL
else else
rm tmp/$peri/$f.yaml.out rm tmp/$peri/$f.yaml.out

31
transform.yaml Normal file
View File

@ -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