Skip to main content

Driver in Freepascal - Target NativeNT

Freepascal Driver - Target NativeNT

Based on ‘WRITE ONCE COMPILE ANYWHERE’ principle, Freepascal has the ability to make DLLs, Console and GUI Applications for multiple platforms followed by support for ARM Processors, etc. A very interesting feature that Freepascal (may) will have in the near future is the ability to compile Kernel Mode and or User Mode Device Drivers. Although the support is unavailable in the current stable release, we might one day in the near future be writing our own Device Drivers in Freepascal wth a built in support in some new future release of Freepascal, that is for now not possible with the Current Stable Release of Freepascal. The Official Page related to this new feature is: Target-NativeNT in Freepascal Wiki.  
I wrote this Article because I saw that many people were having problem(s) building the NativeNT FreepascalPackage provided in as the Trunk Build.
If you just want the Compiled Tools and don’t want to know the actual build process, scroll down to the end of this page and you will find a RAR Package (password: nativent). You will find the Kernel Mode RTL (Units), NativeNT ppc386 (renamed to ppc) and NativeNT fpcmake. With those, you can simply extract and immediately start building your own Kernel Mode Driver in FreePascal. The Details are provided within the Package in the ReadME File along with a Sample Driver. If you have Delphi installed on your PC, you can use DDDK (Delphi Driver Development Kit).
With that being said, let’s start.
The real problem starts for the beginners, completely new to the GnuWIN32 MAKE Utility. The GnuWIN32 MAKE Utility simply reads the MakeFile in the Current Directory and starts the build process without giving the user the pain of doing it all manually. Now, I already have Lazarus installed in my Computer which means I don’t have to install the GnuWIN32 MAKE Utility additionally. The Lazarus Package comes with it (%LAZARUS_DIR%\fpc\2.4.4\bin\i386-win32\make.exe).

Goto the Freepascal Development Page

Download FPCBUILD.ZIP ( >= 60 MB )
Don’t download the fpc.zip ( 31 MB ), it will only emit error(s) and doesn't contain the files required for NativeNT Build Process.

Extract the ZIP to say drive D: and you will have a folder D:\fpcbuild



Okay, so below is my MAKE.CMD to enter the required Directories and call the required MAKE.EXE:
@ECHO OFF
d:
ECHO { NAVIGATING TO FPCBUILD DIR  }
ECHO { CALLING LAZARUS_MAKE.EXE    }
cd fpcbuild\fpcsrc\compiler
d:\lazarus\fpc\2.4.4\bin\i386-win32\make

ECHO { NAVIGATING TO UTILS_FPCM    }
ECHO { CALLING LAZARUS_MAKE.EXE    }
cd..\utils\fpcm
d:\lazarus\fpc\2.4.4\bin\i386-win32\make

ECHO { COMPILING FREEPASCAL RTL    }
cd d:\fpcbuild\fpcsrc\rtl
d:\lazarus\fpc\2.4.4\bin\i386-win32\make FPC=d:\fpcbuild\fpcsrc\compiler\ppc386.exe OS_TARGET=nativent OPT=”-dKMODE”

ECHO { #EXITING COMMAND_PROMPT#    }
PAUSE

Now, lets understand it part by part:
@ECHO OFF
d:
ECHO { NAVIGATING TO FPCBUILD DIR  }
ECHO { CALLING LAZARUS_MAKE.EXE    }
cd fpcbuild\fpcsrc\compiler
d:\lazarus\fpc\2.4.4\bin\i386-win32\make
1.       Enters Drive D:
2.       Goes to the Folder fpcbuild\fpcsrc\compiler
3.       Calls GnuWIN32 MAKE Utility residing in %LAZARUS_DIR%\fpc\2.4.4\bin\i386-win32\make.exe(%LAZARUS_DIR% in my case is D:\Lazarus).
If you are aware, there is a MakeFile in fpcbuild\fpcsrc\compiler\ which comes with the FPCBUILD.ZIP. The MAKE.EXE reads the MakeFile and starts the build Process of the Compiler.
The Same goes for the FPCMAKE.EXE in (..\utils\fpcm\). 
Now, building the RTL, we need to choose between UserMode and KernelMode. I will choose KernelMode RTL Compilation as it runs under RING0.
ECHO { COMPILING FREEPASCAL RTL    }
cd d:\fpcbuild\fpcsrc\rtl
d:\lazarus\fpc\2.4.4\bin\i386-win32\make FPC=d:\fpcbuild\fpcsrc\compiler\ppc386.exe OS_TARGET=nativent OPT=”-dKMODE”
The Make is the path of GnuWIN32 Make Utility in Lazarus Directory, FPC=YOUR_NEW_PPC386.EXE,OS_TARGET=nativent (otherwise the i386-win32 RTL would be produced) and OPT=”-dKMODE” is the switch that makes the difference between UserMode RTL and KernelMode RTL. You cannot produce both at once.

As you can see, the build process is quite simple. It Compiles fine with few warnings here and there. But at last, you will get the ppc386.exe(2.16MB) in  \fpcbuild\fpcsrc\compiler\ppc386.exe, fpcmake.exe in\fpcbuild\fpcsrc\utils\rtl\units\i386-nativent.
Found this post useful ? If so, Click +1 and recommend this site on Google

Comments

Popular posts from this blog

உடல் எடையை குறைக்க வேண்டுமா ?

இன்றைய அவசர உலகின் மிக பெரிய பிரச்சனையாக இருப்பது உடல் எடை அதிகரிப்பது தான்.மனம் போன போக்கில் உணவு கட்டு பாடு இல்லாமல் கண்டதையும் உள்ளே தள்ளுவதும்,உக்காந்த இடத்திலேயே கணணி முன் நேரத்தை விரயமாக்குவதும் தான் இந்த பிரச்சனைக்கு மூல காரணமாகும். அது சரி இந்த பிரச்சனையை எப்படி இல்லாமல் செய்வது அல்லது உடல் எடையை எவ்வாறு குறைப்பது என்பதை பற்றி பாப்போம் , பல வருட ஆரய்சிக்குபின் மருத்துவர்கள்   உடல் எடைய குறைக்க மிகவும் சுலபமான உடற்பயிற்சியை கண்டுபிடித்துள்ளனர்.இது  100% பயனளிக்க கூடியது, எந்த இடத்திலும் எந்தநேரத்திலும் மிக சுலபமா செய்ய கூடிய உடற் பயிற்சியாகும்.இந்த உடற்பயிற்சிகள் படத்துடன் கீழே தரப்பட்டுள்ளது நீங்களும் முயற்சித்து பாருங்கள கண்டிப்பாக பலன் கிடைக்கும்... முதலில் நாற்காலியில் உட்கார்ந்து இட  பக்கம் பார்கவும் .. ..        அடுத்து  நாற்காலியில் உட்கார்ந்து வல  பக்கம் பார்கவும்  ....  நண்பர்கள் யாரவது மச்சி வாடா சின்ன பீஸ் ,இங்க பாரு சூப்பர் அய்டம்னு சொல்லி கால்ல விழுந்து கூப்பிட்டலோ மேற்கூறிய உடற் பயிற்சிகளை முயற்சித்து பார்கவும் கண்டிப்பாக பலன் கிடைக்கும் .

38 (new) web tools to keep you busy

For many of us, the internet represents our daily job, income resource or biggest hobby. Every day we check our emails, read our feeds, visit our websites, find and discuss new things and GOD knows what else. It requires a lot of tools to do all this stuff and sometimes, we forget to search for easier solutions losing valuable time or keeping down the production graph. It's very hard to keep track with everything that's new and popular and this is why we do monthly searches for the best web tools out there. Enjoy!  45+ Web Operating Systems "There are many more web operating systems hoping to bring all your usual desktop applications online in one place - here are more than 45 of our favorites."  15 Ways To Create Website Screenshots "15 Ways To Create Website Screenshots"  Open Source Windows "The promise of open source software is best quality, flexibility and reliability. The only way to have TRUE "Open Source Windows"is

40 Fresh & Beautiful Examples of Websites With Large Backgrounds

Using large sized pictures or illustrations as your website’s background adds a great visual appeal to your website’s design. Many web designers use large images as backgrounds as more and more users are now opting for high resolution monitors and high speed internet connections. Here’s a showcase of 40 Fresh and amazing websites that are using large background images. 1.  The Pixel Blog 2.  Copimaj Interactive 3.  Flourish Web Design 4.  Abduction Lamp 5.  Morphix Design Studio 6.  Final Phase 7.  Make Photoshop Faster 8.  WebSarga 9.  Suie Paparude 10.  Duirwaigh Studios 11.  BlackMoon Design 12.  Sepitra 13.  Le Blog de Gruny 14.  Piipe 15.  Mozi Design Studio 16.  Electric Current 17.  Lora Bay Golf 18.  Life Style Sports 19.  ligne triez 20.  Oliver Kavanagh 21.  World of Merix Studio 22.  Le Web Defi 23.  How host 24.  Productive Dreams 25.  Gary Birnie 26.  Glocal Ventures 27.  GDR UK 28.  Absolute Bica 29.  Le Nordik 30.  Leaf Tea Shop & Bar 31.  Paul Smith 32.  EwingCole