Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 156 (pdf).
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 25.8.1. Přehled novinek v Changelogu.
Včera večer měl na YouTube premiéru dokumentární film Python: The Documentary | An origin story.
Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.
Ubuntu nově pro testování nových verzí vydává měsíční snapshoty. Dnes vyšel 4. snapshot Ubuntu 25.10 (Questing Quokka).
Řada vestavěných počítačových desek a vývojových platforem NVIDIA Jetson se rozrostla o NVIDIA Jetson Thor. Ve srovnání se svým předchůdcem NVIDIA Jetson Orin nabízí 7,5krát vyšší výpočetní výkon umělé inteligence a 3,5krát vyšší energetickou účinnost. Softwarový stack NVIDIA JetPack 7 je založen na Ubuntu 24.04 LTS.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) spolu s NSA a dalšími americkými úřady upozorňuje (en) na čínského aktéra Salt Typhoon, který kompromituje sítě po celém světě.
Společnost Framework Computer představila (YouTube) nový výkonnější Framework Laptop 16. Rozhodnou se lze například pro procesor Ryzen AI 9 HX 370 a grafickou kartu NVIDIA GeForce RTX 5070.
Google oznamuje, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Tato politika bude implementována během roku 2026 ve vybraných zemích (jihovýchodní Asie, Brazílie) a od roku 2027 celosvětově.
Byla vydána nová verze 21.1.0, tj. první stabilní verze z nové řady 21.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools a Libc++.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <usb.h> void usage() { fprintf(stderr, "Usage: yakumo-repair <old_vid:old_pid> <new_vid:new_pid>\n"); fprintf(stderr, "You have to download Vend_ax.hex (using e.g. cycfx2prog) first!\n"); exit (-1); } unsigned int vid_o, pid_o, vid_n, pid_n; void repair (struct usb_device *dev, usb_dev_handle *h) { unsigned char buffer[256], b2[256]; int i,n,ok; n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 0xa2, 0, 0, (char *)buffer, sizeof(buffer), 5000); printf ("EEPROM READ: [%d]\t", n); if (n) for (i=0; i<n; i++) { printf(" %02x", buffer[i]); } printf ("\n"); if (n!=256) { fprintf (stderr, "Error reading EEPROM!\n"); return; } if ( (buffer[1]==(vid_o%0x100)) && (buffer[2]==(vid_o/0x100)) && (buffer[3]==(pid_o%0x100)) && (buffer[4]==(pid_o/0x100)) ) { printf ("... old VID/PID OK! Trying to overwrite VID/PID in EEPROM...\n"); // set new VID/PID into the buffer! buffer[0]=0xc0; buffer[1]=(vid_n%0x100); buffer[2]=(vid_n/0x100); buffer[3]=(pid_n%0x100); buffer[4]=(pid_n/0x100); n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, 0xa2, 0, 0, (char *)buffer, 5, 5000); printf ("... written %d bytes...\n", n); printf ("Verifying...\n"); n=usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, 0xa2, 0, 0, (char *)b2, sizeof(b2), 5000); if (n!=256) { fprintf (stderr, "Error reading EEPROM!\n"); return; } ok=1; for (i=0; i<n; i++) if (buffer[i]!=b2[i]) ok=0; printf (ok?"Verified, OK!\n":"Error occured!\n"); } else fprintf (stderr, "VID/PID in EEPROM don't match! Skipping..."); } int main (int argc, char **argv) { struct usb_bus *bus; struct usb_device *dev; usb_dev_handle *handle = NULL; if (argc!=3) usage(); sscanf(argv[1], "%x:%x", &vid_o, &pid_o); sscanf(argv[2], "%x:%x", &vid_n, &pid_n); if ((vid_o>0xffff) || (pid_o>0xffff) || (vid_n>0xffff) || (pid_n>0xffff)) usage(); printf ("\nRepairing: [%04x:%04x] => [%04x:%04x]\n\n", vid_o, pid_o, vid_n, pid_n); usb_init(); usb_find_busses(); usb_find_devices(); for (bus=usb_get_busses(); bus; bus=bus->next) { for (dev=bus->devices; dev; dev=dev->next) { if ((dev->descriptor.idVendor==vid_o) && (dev->descriptor.idProduct==pid_o)) { handle=usb_open(dev); if (!handle) printf("Error opening [%04x:%04x]!\n", vid_o, pid_o); else { printf("Found [%04x:%04x]: trying to repair ----------------\n", vid_o, pid_o); repair(dev, handle); } } } } return 0; }V adresáři rovněž vytvoříme soubor Makefile a do něj dáme:
BIN=/usr/bin USBFLAGS = `libusb-config --cflags` USBLIBS = `libusb-config --libs` CC = gcc CFLAGS = $(USBFLAGS) -O3 -Wall LIBS = $(USBLIBS) PROGRAM=yakumo-repair all: $(PROGRAM) .c.o: $(CC) $(CFLAGS) -c $< $(PROGRAM): $(PROGRAM).o $(CC) -o $(PROGRAM) $(PROGRAM).o $(LIBS) strip: $(PROGRAM) strip $(PROGRAM) install: strip cp -f $(PROGRAM) $(BIN) clean: rm -f *.o $(PROGRAM)Program zkompilujeme pomocí 'make'.
./cycfx2prog -id=14ee:0225 prg:Vend_ax.hex runProgram vypíše něco jako:
Using ID 14ee:0226 on 001.014. Putting 8051 into reset. Programming 8051 using "Vend_ax.hex". Putting 8051 out of reset.Poté spustíme náš program se dvěma parametry: prvním je současný (nekorektní) pár VID/PID, druhým je opravený VID/PID:
./yakumo-repair 14ee:0225 14aa:0225Program vypíše:
Repairing: [14ee:0225] => [14aa:0225] Found [14ee:0225]: trying to repair ---------------- EEPROM READ: [256] c0 ee 14 25 02 00 00 08 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ... old VID/PID OK! Trying to overwrite VID/PID in EEPROM... ... written 5 bytes... Verifying... Verified, OK!Což znamená, že v tomto okamžiku by mělo být vše v pořádku, stačí adaptér odpojit a znovu zapojit a měl by znovu fungovat.
Tiskni
Sdílej:
odcihleníRDAA-81 pomocí JTAGu po těch peripetiích i napíšu, ale jak se dívám tak jsem pořád slabé máslo a ještě budu muset počkat na corovější zážitky.