I found that a line was missing in the project:
Application.CreateForm(TfmSerialTestCPdrv, fmSerialTestCPdrv);
You should not have to do that manually. Forms are automatically created when you add them to your project, unless you specifically told otherwise.
Nevertheless, and in case new to lazarus, use the project options form settings. there you can visually add or remove forms in your project to autocreate (or not) by moving them from left to right (or vise verse).
If i would have to guess by your trace you inserted the call to createform at the wrong location (= show dpr/lpr file content) or something else is wrong with streaming as your trace seems to go deep into lcl.
btw: Runtime error 217 means unhandled exception. Don't you have sysutils included (which installs a default handler).
PS: with regards to your first code.
If you do something (manually) like this:
CommSerialPort := TCommPortDriver.Create(nil);
then that should be followed by something like this:
CommSerialPort.Free;
Somewhere in your code where the application gets closed (usually at destroy event of your form) in order to free up the allocated resources used by CommSerialPort.