diff --git a/Readme.md b/Readme.md index e86a938..40f8d9b 100644 --- a/Readme.md +++ b/Readme.md @@ -166,6 +166,9 @@ For details refer to the [example description](lib/exampletask/Readme.md). Changelog --------- +[20240428](../../releases/tag/20240428) +********** +* fix build error with M5 gps kit [20240324](../../releases/tag/20240324) ********** * add [SSI rotary encoders](doc/Sensors.md) diff --git a/doc/AtomS3-PortABC-CAN.jpg b/doc/AtomS3-PortABC-CAN.jpg new file mode 100644 index 0000000..fb03e0f Binary files /dev/null and b/doc/AtomS3-PortABC-CAN.jpg differ diff --git a/doc/AtomS3Can.jpg b/doc/AtomS3Can.jpg new file mode 100644 index 0000000..ca287c1 Binary files /dev/null and b/doc/AtomS3Can.jpg differ diff --git a/doc/Hardware.md b/doc/Hardware.md index af4c855..f7b15b5 100644 --- a/doc/Hardware.md +++ b/doc/Hardware.md @@ -79,13 +79,15 @@ Can be used e.g. as an NMEA2000 Adapter for a laptop running e.g. OpenCPN with t ![OpenCPN on Laptop via USB and MFD on Android via WiFi](in_action1.jpg) ![OpenCPN on Laptop via USB and AvNav on Android via WiFi](in_action2.jpg) -M5 Stack AtomS3Lite Canunit (experimental since dev20230826) +M5 Stack AtomS3Lite Canunit --------------------- * Hardware: [M5_ATOMS3 Lite](http://docs.m5stack.com/en/core/AtomS3%20Lite) + [CAN Unit](http://docs.m5stack.com/en/unit/can) * Prebuild Binary: m5stack-atoms3-canunit-all.bin * Build Define: BOARD_M5ATOMS3_CANUNIT * Power: Via USB +![M5_Atom_S3 with CAN unit](AtomS3Can.jpg) + M5 Stick C Canunit ------------------ * Hardware: [M5_StickC+](http://docs.m5stack.com/en/core/m5stickc_plus) + [CAN Unit](http://docs.m5stack.com/en/unit/can) @@ -98,6 +100,14 @@ M5 Stick C Canunit Can be used e.g. as an NMEA2000 Adapter for a laptop running e.g. OpenCPN with the NMEA2000 Data converted to NMEA0183. +M5 Stack AtomS3Lite PortABC+CAN+ENV3 +------------------ +* Hardware: [M5_ATOMS3 Lite](http://docs.m5stack.com/en/core/AtomS3%20Lite) + [M5_PORTABC](https://docs.m5stack.com/en/unit/AtomPortABC) + [CAN Unit](http://docs.m5stack.com/en/unit/can) + [M5 ENV3](https://docs.m5stack.com/en/unit/envIII) +* Build: [Online service](BuildService.md) +* Power: Via USB + +![M5_Atom_S3 + PortABC + CAN unit + ENV3](AtomS3-PortABC-CAN.jpg) + Node MCU32s - [Homberger Board](https://github.com/AK-Homberger/NMEA2000WifiGateway-with-ESP32) -------------------------------------- * Hardware: see link in heading diff --git a/lib/hardware/GwM5Base.h b/lib/hardware/GwM5Base.h index b5cc77a..a3284ee 100644 --- a/lib/hardware/GwM5Base.h +++ b/lib/hardware/GwM5Base.h @@ -35,7 +35,7 @@ #ifdef M5_GPS_KIT GWRESOURCE_USE(BASE,M5_GPS_KIT) GWRESOURCE_USE(SERIAL1,M5_GPS_KIT) - #define _GWI_SERIAL1 BOARD_LEFT1,-1,GWSERIAL_TYPE_UNI,"9600" + #define _GWI_SERIAL1 BOARD_LEFT1,-1,GWSERIAL_TYPE_UNI,9600 #endif //M5 ProtoHub diff --git a/tools/decoder.py b/tools/decoder.py index 7f561bc..13d6e7f 100755 --- a/tools/decoder.py +++ b/tools/decoder.py @@ -55,7 +55,7 @@ PLATFORMS = { "ESP32S3": "esp32s3" } -BACKTRACE_REGEX = re.compile(r"(?:\s+(0x40[0-2](?:\d|[a-f]|[A-F]){5}):0x(?:\d|[a-f]|[A-F]){8})\b") +BACKTRACE_REGEX = re.compile(r"(?:\s+(0x4[0-9a-fA-F][0-9a-fA-F](?:\d|[a-f]|[A-F]){5}):0x(?:\d|[a-f]|[A-F]){8})\b") EXCEPTION_REGEX = re.compile("^Exception \\((?P[0-9]*)\\):$") COUNTER_REGEX = re.compile('^epc1=(?P0x[0-9a-f]+) epc2=(?P0x[0-9a-f]+) epc3=(?P0x[0-9a-f]+) ' 'excvaddr=(?P0x[0-9a-f]+) depc=(?P0x[0-9a-f]+)$') @@ -65,6 +65,7 @@ STACK_BEGIN = '>>>stack>>>' STACK_END = '<<[0-9a-f]+):\W+(?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+)(\W.*)?$') +CORE_REGEXP=re.compile('^Core') StackLine = namedtuple("StackLine", ["offset", "content"]) @@ -84,7 +85,8 @@ class ExceptionDataParser(object): self.sp = None self.end = None self.offset = None - + self.line = 0 + self.core = None self.stack = [] def _parse_backtrace(self, line): @@ -143,19 +145,27 @@ class ExceptionDataParser(object): return None def parse_file(self, file, platform, stack_only=False): + lc=0 if platform == 'ESP32' or platform == 'ESP32S3': func = self._parse_backtrace else: func = self._parse_exception if stack_only: func = self._parse_stack_begin - + hasresult=False for line in file: - func = func(line.strip()) - if func is None: - break + if CORE_REGEXP.match(line): + self.core=re.sub("(Core\s+[0-9]+).*",r"\1",line.strip()) + lc+=1 + nextfunc = func(line.strip()) + if nextfunc is None: + hasresult=True + self.line=lc + yield(self) + self.__init__() - if func is not None: + + if not hasresult: print("ERROR: Parser not complete!") sys.exit(1) @@ -249,6 +259,9 @@ def print_stack(lines, resolver): def print_result(parser, resolver, platform, full=True, stack_only=False): + print("##line %d"%parser.line) + if parser.core is not None: + print("##",parser.core) if platform == 'ESP8266' and not stack_only: print('Exception: {} ({})'.format(parser.exception, EXCEPTIONS[parser.exception])) @@ -314,7 +327,6 @@ if __name__ == "__main__": parser = ExceptionDataParser() resolver = AddressResolver(addr2line, elf_file) - parser.parse_file(file, args.platform, args.stack_only) - resolver.fill(parser) - - print_result(parser, resolver, args.platform, args.full, args.stack_only) + for result in parser.parse_file(file, args.platform, args.stack_only): + resolver.fill(result) + print_result(result, resolver, args.platform, args.full, args.stack_only) diff --git a/webinstall/build.yaml b/webinstall/build.yaml index cdfde68..569c95c 100644 --- a/webinstall/build.yaml +++ b/webinstall/build.yaml @@ -147,6 +147,10 @@ types: description: "M5 Gps Unit" url: "https://docs.m5stack.com/en/unit/gps" resource: serial + - label: "RS232/RS422" + value: SERIAL_GROOVE_232#grv# + description: "Generic RS232/RS422 Unit (bidirectional)" + resource: serial - &m5groove type: select