Support headless operation on Raspberry Pi 4

Some code cleanup for src/kernel.*
pull/37/head
Rene Stange 3 years ago
parent c02d749d3c
commit adadc17690
  1. 10
      src/circle_stdlib_app.h
  2. 18
      src/kernel.cpp
  3. 6
      src/kernel.h

@ -97,6 +97,7 @@ public:
: CStdlibApp (kernel),
mScreenUnbuffered (mOptions.GetWidth (), mOptions.GetHeight ()),
mScreen (&mScreenUnbuffered),
mbScreenAvailable (false),
mTimer (&mInterrupt),
mLogger (mOptions.GetLogLevel (), &mTimer)
{
@ -109,10 +110,7 @@ public:
return false;
}
if (!mScreenUnbuffered.Initialize ())
{
return false;
}
mbScreenAvailable = mScreenUnbuffered.Initialize ();
#if 0
if (!mSerial.Initialize (115200))
{
@ -138,6 +136,7 @@ protected:
CScreenDevice mScreenUnbuffered;
//CSerialDevice mSerial;
CWriteBufferDevice mScreen;
bool mbScreenAvailable;
CTimer mTimer;
CLogger mLogger;
};
@ -164,7 +163,8 @@ public:
mUSBHCI (&mInterrupt, &mTimer, TRUE),
mEMMC (&mInterrupt, &mTimer, &mActLED),
#if !defined(__aarch64__) || !defined(LEAVE_QEMU_ON_HALT)
mConsole (&mScreen, TRUE)
//mConsole (&mScreen, TRUE)
mConsole (&mNullDevice, &mScreen)
#else
mConsole (&mScreen)
#endif

@ -18,10 +18,10 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#include "kernel.h"
#include <iostream>
#include <string.h>
#include <circle/logger.h>
#include <circle/synchronize.h>
#include <assert.h>
LOGMODULE ("kernel");
@ -75,6 +75,8 @@ bool CKernel::Initialize (void)
m_pDexed = new CMiniDexedPWM (&m_Config, &mInterrupt);
}
assert (m_pDexed);
if (!m_pDexed->Initialize ())
{
return FALSE;
@ -85,15 +87,18 @@ bool CKernel::Initialize (void)
CStdlibApp::TShutdownMode CKernel::Run (void)
{
std::cout << "Hello MiniDexed!\n";
assert (m_pDexed);
while(42==42)
while (42 == 42)
{
boolean bUpdated = mUSBHCI.UpdatePlugAndPlay ();
m_pDexed->Process(bUpdated);
mScreen.Update ();
if (mbScreenAvailable)
{
mScreen.Update ();
}
}
return ShutdownHalt;
@ -103,5 +108,8 @@ void CKernel::PanicHandler (void)
{
EnableIRQs ();
s_pThis->mScreen.Update (4096);
if (s_pThis->mbScreenAvailable)
{
s_pThis->mScreen.Update (4096);
}
}

@ -47,9 +47,9 @@ private:
private:
// do not change this order
CConfig m_Config;
CI2CMaster m_I2CMaster;
CMiniDexed *m_pDexed;
CConfig m_Config;
CI2CMaster m_I2CMaster;
CMiniDexed *m_pDexed;
static CKernel *s_pThis;
};

Loading…
Cancel
Save