Teensyduino 1.57 Beta #2

Paul

Administrator
Staff member
Teensyduino 1.57 Beta #2

Here is a second beta test for Teensyduino 1.57.


Linux 32 bit:
https://www.pjrc.com/teensy/td_157-beta2/TeensyduinoInstall.linux32

Linux 64 bit:
https://www.pjrc.com/teensy/td_157-beta2/TeensyduinoInstall.linux64

Linux ARM: (coming soon...)
https://www.pjrc.com/teensy/td_157-beta2/TeensyduinoInstall.linuxarm

Linux ARM64:
https://www.pjrc.com/teensy/td_157-beta2/TeensyduinoInstall.linuxaarch64

MacOS (Catalina to Monterey)
https://www.pjrc.com/teensy/td_157-beta2/Teensyduino_MacOS_Catalina.zip

Old MacOS (Lion to Mojave)
https://www.pjrc.com/teensy/td_157-beta2/TeensyduinoInstall.dmg

Windows:
https://www.pjrc.com/teensy/td_157-beta2/TeensyduinoInstall.exe


Changes since Teensyduino 1.56-beta1:

Add USB Type Serial+MTP
Dynamic AudioConnection on Teensy 3 (Jonathan Oakley)
Fix RawHID revc with 0 timeout on Teensy 4 (KurtE)
Fix PT8211_2 initialization (KurtE)
Update QuadEncoder (mjs513)
USBHost_t36 USBDrive handle GPT & Ext partitions (KurtE)
USBHost_t36 USBFilesystem formatting (mjs513, KurtE)
USBHost_t36 USBDrive startFilesystems (KurtE)
Remove SdFat GPT & Ext partitions, now done in USBHost_t36
 
Install on Windows Home x64 went smoothly no blue screens about security which is good.

Started to do some testing with updates to USBHost_t36. Did notice UsbMscFat was not included in Beta2 - maybe for Beta3.

Did some testing with MTP_Teensy this morning and seem to be having issues with it wanting to reboot when specifing SPI NAND (1G and 2G) using the memory board breakout. Not sure yet if its an issue with NAND with MTP/USBHost or an issue with my breakout board.

Anyway if I just use SPI Nor flash from the breakout and 2 USB Drives partitioned of course
Code:
 === Drive index 0 found ===

Try Partition list
Partition Table
	part,boot,bgnCHS[3],type,endCHS[3],start,length
exFAT:	1,0,0x20,0x21,0x0,0x7,0xFE,0xFF,0xFF,2048,50362368
Extend:	2,0,0xFE,0xFF,0xFF,0xF,0xFE,0xFF,0xFF,50364416,70780928
exFAT:	2:1,0,0x20,0x21,0x0,0x7,0xFE,0xFF,0xFF,50364480(64),70780864 (0)
pt_#0:	3,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
pt_#0:	4,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
Found new Volume:0
Found new Volume:1

 === Drive index 1 found ===

Try Partition list
Partition Table
	part,boot,bgnCHS[3],type,endCHS[3],start,length
*** GPT Disk WIP ***
GPT guard:	1,0,0x0,0x2,0x0,0xEE,0xFE,0xBF,0xDB,1,4294967295
pt_#0:	2,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
pt_#0:	3,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
pt_#0:	4,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
	 < unused area starting at: 0 length 242075647 >

GPT partition header revision: 10000
LBAs current:1 backup:242075647 first:34 last:242075614
Disk GUID:A9140183-C42E-E8C4-C060-39F59EFB0CCCStart LBA Array: 2 Count: 128 size:128
Part	 Type Guid, Unique Guid, First, last, attr, name
0	EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, A8A4FA8A-72C3-0915-BF58-114D93406C41, 2112, 59158591, 0, 
>>> Microsoft Basic Data Partition
1	EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, A6FDEF94-76A2-BC8F-3E4C-55D104277D6F, 59160640, 242073727, 0, 
>>> Microsoft Basic Data Partition
    EXFAT:
3	00000000-0000-0000-0000-000000000000, 00000000-0000-0000-0000-000000000000, 0, 0, 0, 
Found new Volume:2
Found new Volume:3

Dump Storage list(9)
store:0 storage:10001 name:PgmIndx fs:2001110c pn:
store:1 storage:20001 name:BUILTIN fs:20013954 pn:
store:2 storage:30001 name:QSPI fs:2001380c pn:W25Q128JV*M (DTR)
store:3 storage:40001 name:sflash5 fs:20013e28 pn:W25Q512JV*M (DTR)
store:4 storage:50001 name:sflash6 fs:20013f04 pn:W25Q512JV*Q
store:5 storage:60001 name:MSC0 fs:200112ac pn:
store:6 storage:70001 name:MSC1 fs:20011758 pn:
store:7 storage:80001 name:MSC2-GPTFAT32 fs:20011c04 pn:
store:8 storage:90001 name:MSC3 fs:200120b0 pn:

EDIT: Forgot this is the crashreport when using NAND
Code:
 === Drive index 0 found ===

Try Partition list
Partition Table
	part,boot,bgnCHS[3],type,endCHS[3],start,length
exFAT:	1,0,0x20,0x21,0x0,0x7,0xFE,0xFF,0xFF,2048,50362368
Extend:	2,0,0xFE,0xFF,0xFF,0xF,0xFE,0xFF,0xFF,50364416,70780928
exFAT:	2:1,0,0x20,0x21,0x0,0x7,0xFE,0xFF,0xFF,50364480(64),70780864 (0)
pt_#0:	3,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
pt_#0:	4,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
Found new Volume:0
Found new Volume:1

 === Drive index 1 found ===

Try Partition list
Partition Table
	part,boot,bgnCHS[3],type,endCHS[3],start,length
*** GPT Disk WIP ***
GPT guard:	1,0,0x0,0x2,0x0,0xEE,0xFE,0xBF,0xDB,1,4294967295
pt_#0:	2,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
pt_#0:	3,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
pt_#0:	4,0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0
	 < unused area starting at: 0 length 242075647 >

GPT partition header revision: 10000
LBAs current:1 backup:242075647 first:34 last:242075614
Disk GUID:A9140183-C42E-E8C4-C060-39F59EFB0CCCStart LBA Array: 2 Count: 128 size:128
Part	 Type Guid, Unique Guid, First, last, attr, name
0	EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, A8A4FA8A-72C3-0915-BF58-114D93406C41, 2112, 59158591, 0, 
>>> Microsoft Basic Data Partition
1	EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, A6FDEF94-76A2-BC8F-3E4C-55D104277D6F, 59160640, 242073727, 0, 
>>> Microsoft Basic Data Partition
    EXFAT:
3	00000000-0000-0000-0000-000000000000, 00000000-0000-0000-0000-000000000000, 0, 0, 0, 
Found new Volume:2
Found new Volume:3

Dump Storage list(9)
store:0 storage:10001 name:PgmIndx fs:2001110c pn:
store:1 storage:20001 name:BUILTIN fs:20013954 pn:
store:2 storage:30001 name:QSPI fs:2001380c pn:W25Q128JV*M (DTR)
store:3 storage:40001 name:sflash5 fs:20013e28 pn:W25Q512JV*M (DTR)
store:4 storage:50001 name:sflash6 fs:20013f04 pn:W25Q512JV*Q
store:5 storage:60001 name:MSC0 fs:200112ac pn:
store:6 storage:70001 name:MSC1 fs:20011758 pn:
store:7 storage:80001 name:MSC2-GPTFAT32 fs:20011c04 pn:
store:8 storage:90001 name:MSC3 fs:200120b0 pn:
 
As a followup to my post on MTP issues looks like the problem is isolated to getting and printing the storage list:
Code:
    case '1':
      // first dump list of storages:
      fsCount = MTP.getFilesystemCount();
      DBGSerial.printf("\nDump Storage list(%u)\n", fsCount);
      for (uint32_t ii = 0; ii < fsCount; ii++) {
        DBGSerial.printf("store:%u storage:%x name:%s fs:%x pn:", ii,
                         MTP.Store2Storage(ii), MTP.getFilesystemNameByIndex(ii),
                         (uint32_t)MTP.getFilesystemByIndex(ii));
        Serial.flush();        
        DBGSerial.println(getFSPN(ii));
      }

If I look in File explorer and access winbond 2G and accessing its files there is no issue:
Capture.jpg

The code shows there are 9 Filesystems but in actuality there are 11:
Capture.PNG
 
Installed this morning so far on Windows 10, just starting up Ubuntu machine will try on that.
Note: I am running Ubuntu 20.04... wondering if I should update this machine to 22.04?


Note: The Serial+MTP so far only includes setup for T4.x.

Tested our more extended picture viewer on RA8876 (not part of our default examples)... And it is working.
Minor notes: to those of us who use some different build tools...

TSET - I had to update slightly as the boards.txt has USB type=serialmtp and our temporary one had mtpserial...

Also TyCommander now shows (Teensyduino Generic) ...
 
As a followup to my post on MTP issues looks like the problem is isolated to getting and printing the storage list:
Code:
    case '1':
      // first dump list of storages:
      fsCount = MTP.getFilesystemCount();
      DBGSerial.printf("\nDump Storage list(%u)\n", fsCount);
      for (uint32_t ii = 0; ii < fsCount; ii++) {
        DBGSerial.printf("store:%u storage:%x name:%s fs:%x pn:", ii,
                         MTP.Store2Storage(ii), MTP.getFilesystemNameByIndex(ii),
                         (uint32_t)MTP.getFilesystemByIndex(ii));
        Serial.flush();        
        DBGSerial.println(getFSPN(ii));
      }

If I look in File explorer and access winbond 2G and accessing its files there is no issue:


The code shows there are 9 Filesystems but in actuality there are 11:

FYI - This is the line that is causing the issues:
Code:
        //DBGSerial.println(getFSPN(ii));
Did we loose getFSPN?
 
FYI - This is the line that is causing the issues:
Code:
        //DBGSerial.println(getFSPN(ii));
Did we loose getFSPN?

Which sketch are your running?

I believe that getfspn is a function within the example sketch.
That is in SD_Program_SPI_QSPI_MTP-logger.ino (assuming I typed correctly)

Code:
const char *getFSPN(uint32_t ii) {
  FS* pfs = MTP.storage()->getStoreFS(ii);
  // total set of hacks...
  if (pfs == (FS *)&lfsram) return lfsram.getMediaName();
  if (pfs == (FS *)&lfsProg) return lfsProg.getMediaName();
  #ifdef ARDUINO_TEENSY41
  if (pfs == (FS *)&lfsqspi) return lfsqspi.getMediaName();
  #endif
  for (uint8_t i = 0; i < CLFSSPIPINS; i++) {
    if (pfs == (FS *)&lfsspi[i]) return lfsspi[i].getMediaName();
  }
  return "";
}
 
Which sketch are your running?

I believe that getfspn is a function within the example sketch.
That is in SD_Program_SPI_QSPI_MTP-logger.ino (assuming I typed correctly)

Code:
const char *getFSPN(uint32_t ii) {
  FS* pfs = MTP.storage()->getStoreFS(ii);
  // total set of hacks...
  if (pfs == (FS *)&lfsram) return lfsram.getMediaName();
  if (pfs == (FS *)&lfsProg) return lfsProg.getMediaName();
  #ifdef ARDUINO_TEENSY41
  if (pfs == (FS *)&lfsqspi) return lfsqspi.getMediaName();
  #endif
  for (uint8_t i = 0; i < CLFSSPIPINS; i++) {
    if (pfs == (FS *)&lfsspi[i]) return lfsspi[i].getMediaName();
  }
  return "";
}

Yeah the dummy that I am I forgot. getMediaName is whats in the core - duh.

Anyway the conflict seems to be that when I print the media name for NANDS and then MSC it seems to be crashing right the first print for MSC partition. If I don't print the NAND PartNumbers no crash and it works:
Code:
Dump Storage list(11)
store:0 storage:10001 name:PgmIndx fs:2001110c pn:PROGRAM
store:1 storage:20001 name:BUILTIN fs:20013b3c pn:
store:2 storage:30001 name:QSPI fs:200139f4 pn:W25Q128JV*M (DTR)
store:3 storage:40001 name:sflash5 fs:20014010 pn:W25Q512JV*M (DTR)
store:4 storage:50001 name:sflash6 fs:200140ec pn:W25Q512JV*Q
store:5 storage:60001 name:WINBOND1G fs:200112ac pn:
store:6 storage:70001 name:WINBOND2G fs:200113a0 pn:
store:7 storage:80001 name:MSC0 fs:20011494 pn:
store:8 storage:90001 name:MSC1 fs:20011940 pn:
store:9 storage:a0001 name:MSC2-GPTFAT32 fs:20011dec pn:
store:10 storage:b0001 name:MSC3 fs:20012298 pn:

Here is what I am using now in my mtp_test_integrity sketch
Code:
const char *getFSPN(uint32_t ii) {
  FS* pfs = MTP.storage()->getStoreFS(ii);
  #if USE_LFS_QSPI==1
    if (pfs == (FS *)&qspifs[0] && USE_LFS_QSPI == 1) return qspifs[0].getMediaName();
  #endif
  #if useExMem == 1
    if (pfs == (FS *)&lfsram) return lfsram.getMediaName();
  #endif
  #if useProIdx == 1
    if (pfs == (FS *)&lfsProg) return lfsProg.getMediaName();
  #endif
  for (uint8_t i = 0; i < 4; i++) {
    #if USE_LFS_RAM == 1
      if (pfs == (FS *)&ramfs[i]) return ramfs[i].getMediaName();
    #endif
    #if USE_LFS_PROGM == 1
      if (pfs == (FS *)&progmfs[i]) return progmfs[i].getMediaName();
    #endif
    #if USE_LFS_SPI == 1
      if (pfs == (FS *)&spifs[i]) return spifs[i].getMediaName();
    #endif
    #if USE_LFS_NAND == 1
      //if (pfs == (FS *)&nspifs[i]) return nspifs[i].getMediaName();
    #endif
    #if USE_LFS_QSPI_NAND == 1
      if (pfs == (FS *)&qnspifs[i]) return qnspifs[i].getMediaName();
    #endif
    #if USE_LFS_FRAM == 1
      if (pfs == (FS *)&qfspi[i]) return qfspi[i].getMediaName();
    #endif
   }
  return "";
}
Haven't figured out why yet.
 
I thought I would mention, that today I installed Ubuntu 22.04 onto an RPI4(8mb) on an SSD 64 bit.

Looked for Arduino 2, but did not see any for arch64, so installed 1.8.18 and installed TD 1.57b2.

I then installed enough libraries: mtp_teensy, jpeg_dec, ping_dec, ra8876... And then built our mtp_tft_picture_view (my github by that name),
I built using Serial + MTP for T4.1 on RA8876

And it built and programmed the T4.1 and I could Use MTP to talk to the Teensy.
Screenshot from 2022-06-09 17-19-00.jpg

And the images are showing up on my RA8876 display.
 
Back
Top