After a long day of bugfixing and tweaking, the build process now works. I had to set up a shell script to manually build the stuff in src/boot - still not sure what the problem is, but at least I can rebuild properly with one shell command with all dependencies kicking in as they should and produce the ./controlix executable program.
Today's other products were a skeleton VGA text driver and a basic native pointer library. The pointer library is currently written in C, although I plan to rewrite it in native assembly once multiplatform stuff comes on line. ... read more
Although the build scripts are failing strangely in src/boot, manually building in that directory appears to work properly, producing an executable ("controlix") which executes properly (prints "Hello, world!" and executes several function calls linked in from different object files). The symbol-renaming trick with objcopy works great, allowing linkage of the three separately-compiled object files.... read more
GHDL has the VHPIDIRECT tag to let VHDL code call external function by symbol name. Unfortunately, this doesn't let the package interface come through, only the function name:
printk.vhdl: symbol is "work_printk_pkg_printk
init.vhdl: symbol is "printk"
The problem this leads to is related to how packages are used across module barriers in normal VHDL code. Normally when building a netlist, the tools would see a line with something like "use work.printk_pkg.printk" and would know to bring in the external references out of the whole hierarchy. However, when compiling for binary execution as a user program or to create a dynamic library, separate object files are created and the extra-package references are done via a binary object linker of some type. In those cases, the package-name mangling of the function symbols will cause the linking to fail.... read more
src/init/init.vhdl and src/lib/printk.vhdl are now both compiling, and the symbol tables look good. My first VHDL code |->.
Jon
The build and directory system is looking a lot better today. "./autogen.sh ; ./configure" runs without errors and make tries to compile init.vhdl with the correct GHDL executable.
Jon
New (mostly skeleton) stuff:
The core need of any system software language is a pointer type. GHDL doesn't have this, only the VHPIDIRECT pure-function-call interface system. No big deal, though - we should be able to pass constrained integer types through to an assembly-language trampoline which will do the memory interfacing for us. IIRC, the new versions of gcc and binutils will optimize away the object-to-object calling indirection, eliminating the overhead normally associated with calling an API function outside of local object scope.... read more
I would have liked to write most of Controlix in SpecC, but somehow I missed noticing that SpecC doesn't output netlists. It is my intention to implement Controlix in a hardware/software mixable fashion, which GHDL (http://ghdl.free.fr) allows for.
The initial pseudocode for controlix.h, which holds the struct data for the filesystem types, is done and has been posted. anodes (Absolute nodes or bus ports or files) are not included because it is completely specified by hardware and not categorizeable with anything other than a regular measure (integer).
Hi anyone,
Just finished the initial project setup work today. The design notes I have so far are on the wiki front page. Now I need to think about how I am going to put some more detailed explanatory text together regarding the list of filesystem types....