Using a chirp signal is not a preferred way, unless you are not able to use an arbitrary waveform generator (AWG) or in general a programmable signal generator. Chirp is good solution if the signal generation and measurement is done with analogue components. But based on your question you are dealing with digital signals, so there are better options.
A simplest way is to take advantage of the transient by inserting an impulse. This produces an impulse response, which you can capture and take FFT of it. The result is directly the frequency response of the system. This of course requires that you can generate nearly an ideal impulse. If the impulse is not ideal, the frequency response of the system can still be calculated by dividing the FFT of the output impulse by the FFT of the input impulse (dividing each FFT bin separately, and of course FFTs must have the same length). In practice it is required that the FFT of the input impulse does not have too much variation for frequencies within the significant bandwidth. This is because the accuracy for frequencies at low power is reduced by noise (even in pure digital system there would be quantization noise).
In a practical system, the accuracy of a single impulse might suffer from random effects; therefore, it is safer to use a random input signal sequence. This can be thought like a sequence of single impulses but each with different amplitude and also phase, if you are dealing with complex signals. If the signal is white enough (equally distributed within the measured frequency range), then the power spectrum, i.e. the power part of the frequency response can be get simply by long term averaging multiple FFTs (powers of individual bins from separate FFTs are avaraged). However, each FFT must use windowing so that discontinuities at the edges of each FFT are reduced (FFT assumes that signals are periodic, and if they are not, they can be forced to be periodic by windowing. For example Hann window is popular.) Windowing has a spreading effect to individual bins, so if the frequency response of the system has some very steep slopes then the accuracy suffers from the windowing. However, if the resolution bandwidth is small enough, the spreading is insignificant. Of course it is possible to use also input signals that are periodic to avoid the problem of discontinuity. In that case the output signal sequence must be captured exactly at the right time and the length must match to the input signal sequence.
If power spectrum is not enough, and you need also phase response, then mere FFT of the output is not enough. You need to divide the FFT of output by the FFT of original input (each FFT bin separately). Notice that this must be done for each FFT sequence. Then, after division, you can for example separate amplitude and phase, and do long term averaging for them.
Basically, using the method described above whatever signal can be used as input to determine the frequency response, as long as the input signal power is distributed within the desired frequency range. Impulse and random (white noise) are best choices because they have basically instantaneously all frequencies equally covered. Chirp signal has instantaneously only a narrow bandwidth. Therefore, to get the whole frequency response the whole chirp sequence has to be taken to FFT at once, which might require a huge memory for FFT calculation. Also, if there is any time-dependent variation in the system or occasional interferences they might ruin some instantaneous frequency points.