I've built an SD card firmware, for Raspberry Pi.
This firmware is made of two partitions : 1x FAT32 and 1x EXT4. What I'm trying to do, is to let Windows users install it as fast as possible on their own SD cards.
The classic way is to deliver a full SD card image, and let people flash it (using SD Formatter, Wind32DiskImager, etc). In most cases, it takes a lot of time.
On Unices however, it is also possible to build the partitions (parted) on the SD card, then copy the files there, and this is only a matter of minutes, if not less.
And so, my question : are there tools to proceed this way on Windows ?
Related
Some background on my issue, my company sells single-use short life battery powered USB devices that certain customers require a certain 'profile' config programmed into the device before shipping. We currently sell them in batches up to 2000. Each one is plugged into a computer(Windows) with our configuration software running, the device is auto detected and then notified when completed. Takes roughly 10-15 seconds per USB device. No input is required on the computer besides inserting the device.
As you can imagine this is a very slow process that is increasing in frequency. The device shows up as mass storage device with about 100kb of storage. All devices have the same name when showing in My Computer. The issue is the programming software does not detect if multiple devices are plugged in, only loading the profile onto the first device plugged in.
Looking for a possible suggestion/solution to improve the speed of configuring these devices? My scratch pad idea was to buy 10-20 port USB hubs and possibly look at enabling one port in sequence every 20 seconds either with hardware buttons or software setup.
I'm not sure if this will work with your programming software, but since the devices present themselves as USB Mass Storage devices, you might be able to plug a bunch of them in at once, then use a script to dismount them all and mount only one device at at time. A one technique to do that is to use the mountvol command.
To unmount a drive
mountvol [DriveLetter] /p
To mount a drive
mountvol [DriveLetter]
Source:
https://superuser.com/questions/704870/mount-and-dismount-hard-drive-through-a-script-software
Another option would be to bypass the programming software entirely. You could use the programming software once to figure out what it is doing to the device (I would guess it's just copying some config file onto the drive). Once you know what it's doing, write your own script that can handle many devices in parallel.
Is it possible to have a named pipe on my PS side of the Zedboard; that leads to a FIFO in the the PL side (using DMA,AXI,I2S etc) that I then revert to the audio out port and play songs from my PS side and listen from the audio out port on the PL side?
If yes then what steps are to be followed on the PS Side?
I'm guessing at mapping of user space into kernel space.
Yes, it turns out that ANALOG DEVICES has just the stuff you need.
There is a different kernel that Analog Device's maintains, which
includes both ALSA drivers
for the audio chip (ADAU1761) and the HDMI output (ADV7511).
https://github.com/analogdevicesinc/linux
there are a few zynq branches in there. Normally Xilinx pulls drivers
from there for their kernels,
but anyone can do the same.
The build instructions (if that's the sort of thing you want to do) is
at:
http://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/software/linux/zynq_2014r2
Or, alternatively you could just download the ready-made image for your particular board from this dropbox link:
https://www.dropbox.com/sh/yfbpj63pcenqatr/AAAt0s3xFXs47I7q5pNopheHa?dl=0
After you download the file; uncompress it with this command:
unxz -d sdimage-8G-zedboard.direct.xz
Find out the name of your SD Card with this command:
dmesg|tail
And then write the resulting image to your 8GB SD Card with this command:
sudo dd if=sdimage-8G-zedboard.direct of=/dev/sdX
where sdX is your particular SDCard which you noted from command dmesg|tail
This command will erase all the pre-existing data on the sd card so make sure you have a backup if that data is important to you.
WARNING: Please be VERY careful while using the dd command. Writing the image to the wrong /dev/sdX location could possibly lead to corruption of OS and/or the hardware also and is extremely risky.
After you burn the image; you're good to go! A full-blown graphical linux environment will turn up ( You need to connect an HDMI display; and use USB OTG port to use the mouse and keyboard)
NOTE: You can also choose between what path you want your sound to play;
whether from the headphone jack or through the HDMI cable.
I have my raspberry pi zero, and during development I spend a lot of time to eject-inject SD card and re-flash it. SD card image is prepared in Buildroot, so it includes boot partition with kernel, device tree overlays and partition with rootfs.
Is there simpler way to re-flash SD card? For example via network? I know that U-boot can load kernel via tftp, but if I need not only kernel, but whole image(device tree overlays are extremely important)?
Use TFTP to load the kernel image, and NFS to mount the root filesystem over the network.
I'm using the upload.cgi to delete a file from the SD and upload a newer version of that file to the SD, but the device the SD is into still does recognize the old version.
The FlashAir SD seems to cache the old file contents until I reboot it.
I know that writing to one SD card from two devices is a bad idea so I understand why they implemented it like this, but I need to swap a file on the SD without unplugging it from the device ...
Is there any kind of hidden setting, shell, whatever I could use to actually make the card "have" the edited file without unplugging the card?
The device the SD card is in will not write to the SD at all (so, no data corruption due to two devices writing at the same time), but it recognizes when I unplug the SD and refuses to work (because it validates the file on restart or when I re-insert the SD). But I'd like to swap that file "live" without the device noticing anything strange...
currently i am using Macbook Pro and Macosx 10.8.2
3 days ago , i bought a DJ controller soon after i realized that that controller hasnt got any buildin sound card.
i connect that device to macbook through usb port.
Everything is fine , i can do my mix using macbook builtin sound card and 5+1 sound system.But the problem is , Most djs do cue which means another sound output needed for their headphones in order to do a smooth transition between sounds.
so i bought a cheap usb sound card.and i plugged my headphone to that.
Mixing software is so dumb that it doesnt have any ability to manage two sound card at the same time.
So i figured out that if i write a virtual sound card driver that has two virtual stereo outputs , I could merge builtin macos sound card and usb sound card into the that virtual driver.
What i 've done so far :
started to read I/O Kit framework.
what i am planning to do:
actually i dont really understand which I/O Kit family to inherit
i may try first to implement PCI family or USB family inheritance to the driver
Another thing is , What i understood so far , in my virtual driver i must clearify device ids and devices' bus adresses in order to forward builtin card to virtual output1 and usb sound card to virtual output 2
any help would be appreciated
just show me the lights , i can drive by myself.
You don't need to write a driver or do any programming at all. Just create an aggregate device using the audio midi setup utility.
http://support.apple.com/kb/HT3956