I want to implement a Kalman Filter for the system: $$ \dot x = Ax + Bu + w_p, \qquad y = Cx + w_m $$ where $w_p$ and $w_m$ are the plant noise and measurement noise respectively, which are both white noise with covariance matrices $$ E(w_p(t) w_p^T(t+\tau)) = S_p \delta(\tau), \qquad E(w_m(t) w_m^T(t+\tau)) = S_m \delta(\tau) .$$ Before I can implement the filter, I need to know $A$, $B$, $C$, $S_p$ and $S_m$. I think I have figured out a way to do this empirically using chirp data. I am interested in a reference to this kind of method, or any other method, for obtaining these matrices (and in particular the covariance matrices).
The offline maximum-likelihood (ML) parameter estimation for continuous-continuous linear partially observed stochastic systems can be performed with the expectation-maximization (EM) algorithm. The general EM algorithm is due to . Ref  deals with the computations that have to be performed in order to use the EM algorithm for such a stochastic system (actually Ref  is more general as it deals with some classes of nonlinear problems as well). Note that the noise covariances cannot be estimated with the ML approach, but are estimated separately from the quadratic variations. This is discussed in , Section IV.B.
 Dempster, A. P., Laird, N. M., & Rubin, D. B. (1977). Maximum Likelihood from Incomplete Data via the EM Algorithm. Journal of the Royal Statistical Society: Series B (Methodological), 39(1), 1–22. https://doi.org/10.1111/j.2517-6161.1977.tb01600.x
 Charalambous, C. D., & Logothetis, A. (2000). Maximum likelihood parameter estimation from incomplete data via the sensitivity equations: the continuous-time case. IEEE Transactions on Automatic Control, 45(5), 928–934. https://doi.org/10.1109/9.855553
Please also note that when only $y$ is observed, the model is not identifiable as multiple parameter combinations lead to the same $p(y)$. For example, a scaling in $x$ can be absorbed by an inverse scaling of $C$.