In March, 1649, there were in the Huron country and its neighborhood eighteen Jesuit priests, four lay brothers, twenty-three men serving without pay, seven hired men, four boys, and eight soldiers. [15] Of this number, fifteen priests were engaged in the various missions, while all the rest were retained permanently at Sainte Marie. All was method, 367 discipline, and subordination. Some of the men were assigned to household work, and some to the hospital; while the rest labored at the fortifications, tilled the fields, and stood ready, in case of need, to fight the Iroquois. The Father Superior, with two other priests as assistants, controlled and guided all. The remaining Jesuits, undisturbed by temporal cares, were devoted exclusively to the charge of their respective missions. Two or three times in the year, they all, or nearly all, assembled at Sainte Marie, to take counsel together and determine their future action. Hither, also, they came at intervals for a period of meditation and prayer, to nerve themselves and gain new inspiration for their stern task.Marguerite Bourgeoys also describes the affair in her unpublished writings.Ive recently started building the final prototype revision
of
micropad. Since the
last post,
Ive been able to:
Finish the transition to a USB-C connector
Get the case in good alignment, including other minor mechanical changes
Fix top-plate buckling
[1] Fancamp in Faillon, Vie de Mlle Mance. Introduction."O mon cher frère, vous pourrois-je expliquer quelle consolation ce m'etoit quand je voyois un pauure baptisé mourir deux heures, une demi journée, une ou deux journées, après son baptesme, particulièrement quand c'etoit un petit enfant!"—Lettre du Père Garnier à son Frère, MS.—This form of benevolence is beyond heretic appreciation..
"By fire," was the reply.[50] Lafitau, I. 480.—Many other French writers speak to the same effect. The following are the words of the soldier historian, La Potherie, after describing the organization of the league: "C'est donc là cette politique qui les unit si bien, à peu près comme tous les ressorts d'une horloge, qui par une liaison admirable de toutes les parties qui les composent, contribuent toutes unanimement au merveilleux effet qui en resulte."—Hist. de l'Amérique Septentrionale, III. 32.—He adds: "Les Fran?ois ont avoüé eux-mêmes qu'ils étoient nez pour la guerre, & quelques maux qu'ils nous ayent faits nous les avons toujours estimez."—Ibid., 2.—La Potherie's book was published in 1722..
[22] Lalemant, Relation, 1646, 9; Marie de l'Incarnation, Lettre, 10 Sept., 1646; Bressani, Relation Abrégée, 175.Where should the Fathers make their abode? Their first thought had been to establish themselves at a place called by the French Rochelle, the largest and most important town of the Huron confederacy; but Brébeuf now resolved to remain at Ihonatiria. Here he was well known; and here, too, he flattered himself, seeds of the Faith had been planted, which, with good nurture, would in time yield fruit..
Mechanical Fixes
But when we see them, in the gloomy February of 1637, and the gloomier months that followed, toiling on foot from one infected town to another, wading through the sodden snow, under the bare and dripping forests, drenched with incessant rains, till they descried at length through the storm the clustered dwellings of some barbarous hamlet,—when we see them entering, one after another, these wretched abodes of misery and darkness, and all for one sole end, the baptism of the sick and dying, we may smile at the futility of the object, but we must needs admire the self-sacrificing zeal with which it was pursued.I fixed the top-plate buckling issue, by including 2 different
standoff sizes that the PCB is mounted to. This increased the overall
macropad height, but gives the board enough clearance for a
completely level top-plate mount.
[27] Le Clerc, II. 50, 51.And now, that we may better know the aspect and condition of the infant colony and incipient mission, we will follow the priest on his way. Mounting the steep path, he reached the top of the cliff, some two hundred feet above the river and the warehouses. On the left lay the fort built by Champlain, covering a part of the ground now forming Durham Terrace and the Place d'Armes. Its ramparts were of logs and earth, and within was a turreted building of stone, used as a barrack, as officers' quarters, and for other purposes. [1] Near the fort stood a small chapel, newly built. The 3 surrounding country was cleared and partially cultivated; yet only one dwelling-house worthy the name appeared. It was a substantial cottage, where lived Madame Hébert, widow of the first settler of Canada, with her daughter, her son-in-law Couillard, and their children, good Catholics all, who, two years before, when Quebec was evacuated by the English, [2] wept for joy at beholding Le Jeune, and his brother Jesuit, De Nou?, crossing their threshold to offer beneath their roof the long-forbidden sacrifice of the Mass. There were inclosures with cattle near at hand; and the house, with its surroundings, betokened industry and thrift.I also changed the revision 1 screw fasteners from M2 to M3. M3
fasteners are much easier to find and purchase, and I wanted these to
be easily repairable if fasteners are ever lost.
See also Edits, Ordonnances Royaux, etc., I. 20-26 (Quebec, 1854).[7] Among his correspondents was the young Duc d'Enghien, afterwards the Great Condé, at this time fifteen years old. "Dieu soit loüé! tout le ciel de nostre chere Patrie nous promet de fauorables influences, iusques à ce nouuel astre, qui commence à paroistre parmy ceux de la premiere grandeur."—Le Jeune, Relation, 1636, 3, 4.Part of what delayed this projects finalization was waiting for my
Prusa Mini+ 3D printer to arrive:
[5] "Je me recommandai à elle en lui promettant de la faire conno?tre dans toutes les occasions que j'en aurois jamais, si elle m'obtenoit de Dieu ma guérison."—Chaumonot, Vie, 46..
The oft-mentioned town of Teanaustayé, or St. Joseph, lay on the south-eastern frontier of the Huron country, near the foot of a range of forest-covered hills, and about fifteen miles from Sainte Marie. It had been the chief town of the nation, and its population, by the Indian standard, was still large; for it had four hundred families, and at least two thousand inhabitants. It was well fortified with palisades, after the Huron manner, and was esteemed the chief bulwark of the country. Here countless Iroquois had been burned and devoured. Its people had been truculent and intractable heathen, but many of them had surrendered to the Faith, and for four years past Father Daniel had preached among them with excellent results.Having a 3D printer at home allowed me to iterate on case tweaks
really fast, and get all the case tolerances worked out. It was also a
fun multi-week assembly that my oldest son helped with, which made for
great fun!
Firmware
Le Jeune had learned the difficulties of the Algonquin mission. To imagine that he recoiled or faltered would be an injustice to his Order; but on two points he had gained convictions: first, that little progress could be made in converting these wandering hordes till they could be settled in fixed abodes; and, secondly, that their scanty numbers, their geographical position, and their slight influence in the politics of the wilderness offered no flattering promise that their conversion would be fruitful in further triumphs of the Faith. It was to another quarter that the Jesuits looked most earnestly. By the vast lakes of the West dwelt numerous stationary populations, and particularly the Hurons, on the lake which bears 43 their name. Here was a hopeful basis of indefinite conquests; for, the Hurons won over, the Faith would spread in wider and wider circles, embracing, one by one, the kindred tribes,—the Tobacco Nation, the Neutrals, the Eries, and the Andastes. Nay, in His own time, God might lead into His fold even the potent and ferocious Iroquois.On the firmware side: Theres still a few blocks of unsafe Rust in the
firmware. Most of this is caused by needing static mutable references
to peripherals for interrupt handling, but I was able to slim down the
unsafe blocks by wrapping more global peripherals in Mutex<RefCell<T>>
types than before. I ended up not using RTIC, since my firmware size was
already at the upper limit of the onboard 32K flash memory size, and
adding another dependency sent it over the edge. A few unsafe blocks
in a small firmware like this seems worth it to not have to buy a chip
with more onboard memory, or reduce other user-visible functionality.
Ive made 4 of these micropads in my (really messy) workshop, to give
to friends, and am excited with how theyve turned out!
I recently completed the first revision prototype of a USB media
controller keyboard macropad. Im not a fan of the touchbar based
media control buttons on my work MacBook Pro, and wanted a way to
control my music and audio volume (especially for video calls) with big chunky, tactile buttons instead.
The result is an Open Source Hardware USB Keyboard I
call micropad.
Experiment with ENIG, gold plated PCB finish, and black PCB solder-mask.
Many of the other existing hardware design ideas were remixes of existing projects
Ive had success with in the past. I improved the rotary encoder
accuracy by actually including a rotary encoder filter circuit
into the schematic. I used
standard Cherry MX keyboard switches I had laying around from a
previous project for the media control buttons, but was able to skip
the
scan matrix
that is normally required when you have more input buttons than
microcontroller pins.
The most difficult part of the hardware design has been getting the
PCB and case design to fit correctly. I still havent found a good
workflow to connect OpenSCAD and KiCAD so I can get exact / precise
alignment with mounting holes and components tolerances. As much as I
appreciate the CAD as source code nature of OpenSCAD, getting good
component fits will probably push me to try something different like
FreeCAD with my next hardware design project.
Firmware
Before this project, I built a small proof
of
concept board that used Rust and an ATSAMD51,
so I was pretty confident I could get Rust going on an STM32F042, and
make its USB hardware peripheral work with Rust. My previous keyboards
firmware
was written in C++,
and I wanted to see if I could mimic a lot of that existing
functionality in Rust.
I was able to leverage some really spectacular Rust crates, that made
this project so much simpler and more intuitive than working in
C++. I spent weeks in the past getting USB to work with crappy STM32 vendor
examples that I could scour on the internet. Even after getting this C++ implementation
to work, so much of that USB handling code wasnt portable to other
microcontrollers.
Instead, on this project, I used the usb-device crate,
which provides an easy abstraction over common USB firmware
implementations, including USB handshake handling, device descriptors,
and communications polling.
In addition to the USB HID device that the hardware would expose, I
also implemented
a simple
bidirectional serial communication protocol between
the hardware device and the host computer. This gets exposed as a
USB-CDC serial device, which is essentially a way to send serial data
over USB.
The result is a command-line client that can be used to control
brightness, and other settings on the micropad itself. Right now, the
messages it supports is pretty limited, but I have plans to expand
this to support live changing the keyboard layout from the host computer.
Whats next
So far, Ive done a first and second revision of the PCB and case. Im
waiting for
a
Prusa Mini+ 3D printer
to arrive from backorder so I can iterate on the case design much
more quickly, and without spending a bunch of money on externally
printed parts. There is some other top plate buckling issues I plan to
fix as well.
I also had to use a lot of unsafe Rust. This comes with the territory
of embedded firmware, but Id like to try some different idioms that
give more safety guarantees. RTIC
might be able to help, but Im not sure if I want a framework like
this in the project. Well see.
I recently purchased a RG350M, a retro-gaming emuation handheld,
thats an improved version of
the RG350. It features a 1Ghz,
JZ4770 dual-core 64-bit processor, with 512MB of DDR ram, and a
640x480 LCD display (double the resolution from the RG350). Much to my
surprise, the JZ4770 SOC features a MIPS64 core, rather than the
prevalent ARM core thats popular in so many portables these days. I
thought MIPS was mostly a thing of the past, but it turns out its
still found in many small embedded devices. MIPS processors were also used in many
popular gaming consoles of the past (PS1, N64, and many others).
The RG350M can emulate all your retro gaming systems quite well, all
the way up to many PS1 games.
Software Toolchain
After I got it, I wanted to know how I write software for the thing. The RG350 is based on OpenDingux
Linux:
a stripped down Linux distribution thats optimized for these small,
portable gaming handhelds. While having a Linux target makes it
significantly easier to target for software development, OpenDingux
has a few design constraints that make it different than your standard
desktop Linux target:
No window manager: No X11 window manager, so you cant just find your favorite GTK application and port it over. By default, applications are launched using the GMenu2X laucher and run fullscreen.
Only one application can be running at a time (with some exceptions).
While OpenDingux has its own OPK application file format, it has no traditional package management system like RPM or APT packages.
First, youll want to setup a cross-compilation toolchain. The two
main things you need are:
A C/C++ compiler that can target the MIPS64 ISA, along with a libc. The RG350 stock firmware ships with uclibc, so well want to make sure our toolchain has that available for compilation.
Cross compiled shared libraries that we can link against during development. Most applications for these handhelds end up using SDL2 for graphics rendering.
Luckily, theres a Linux Buildroot GitHub
repository that Github user
tonyjih put together that will help you bootstrap this entire
toolchain, including common shared libraries that are useful for development.
Development Notes
A few important details on building software for the RG350:
The OPK file format is basically a squashfs filesystem file that contains a special application launcher file inside (.desktop file). The .desktop file has basic application metadata, similar to a Debian package, and also includes a menu icon and application launch command. See the Makefile to see an example for how the squashfs filesystem can be built, and how the .desktop file gets included.
.desktop files are loosely based on GNOME Desktop launcher files, but with different keys and sections for handhelds. See the .desktop file to see a working example.
A useful workflow Ive found is to compile and test my code on my Linux laptop, and then test on the device once Im reasonably happy with the desktop behavior. Remember: this is just Linux, with SDL2, so it should be easy to iterate locally. If you need to use other libraries that dont ship on the device, you will have to either include them compiled in your OPK file, or statically link them into your binary.
A ROM hack binary patcher
I wrote a retro gaming ROM hack binary patcher program that should work on
most OpenDingux handhelds. There
are many great (and awful) community made ROM hacks that Id like to
play, that require binary patching an original stock game ROM. Itd be
nice to be able to patch these games on the handheld itself. Im mostly
interested in playing Super Metroid and Super Mario World hacks (Kaizo
Super Metroid anyone?).
The basic application structure is:
A filesystem browser, to select ROM files and patch files.
A basic IPS / BPS patch decoder, to patch the ROMs. IPS, even with its several shortcomings, seems to be the favored format for patch distribution in the Super Metroid community. I found BPS patches to be more popular in the Super Mario World community. Both IPS and BPS are simple and easy to implement.
If youre going to pick an RG350M, Id recommend getting
one from an Amazon seller. Mine took almost a month to get here,
spending most of its time sitting in a local post office in a
Tendered for Delivery state.
I still have an old GP2X from South Korea, which a lot of the software for
the RG350M is based on. The hardware has improved dramatically since
then, and this is a fun little handheld that is fun and easy to
hack. Id recommend it if youre at all interested in a compact retro
gaming device.