Menu

Controlix / Blog: Recent posts

Build system works properly now

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

Posted by Jon Taylor 2013-01-31

First running program

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

Posted by Jon Taylor 2013-01-30

On ELF symbols and GHDL

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

Posted by Jon Taylor 2013-01-29

Today's second triumph

src/init/init.vhdl and src/lib/printk.vhdl are now both compiling, and the symbol tables look good. My first VHDL code |->.

Jon

Posted by Jon Taylor 2013-01-29

Today's triumph

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

Posted by Jon Taylor 2013-01-28

Misc new stuff today

New (mostly skeleton) stuff:

  • Autotools (autoconf, automake, and libtool) based build system
  • doc/ directory
  • Moved boot/, global/ and driver/ into src/ directory
  • src/boot (boot-time initialization and startup stuff)
  • src/controls/driver/emulation directory (Legacy OS support)
  • src/controls/driver/bus directory (Industry-standard bus types)
  • src/controls/driver/port directory (Industry-standard hardware port types)
  • src/controls/driver/globals (Abstract system-relatedtypes such as interrupts, filesystems, processes, etc)
  • src/controls/lib (General functions like printk, common data structures, etc)... read more
Posted by Jon Taylor 2013-01-28

More on using GHDL

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

Posted by Jon Taylor 2013-01-26

On switching from SpecC to VHDL

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.

Posted by Jon Taylor 2013-01-26

controlix.h

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).

Posted by Jon Taylor 2013-01-20

SF Project set up

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....

Posted by Jon Taylor 2013-01-19
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.