Abstract
Flash memory has become virtually indispensable in most mobile devices. In order for mobile devices to operate successfully, it is essential that flash memory be controlled correctly through the device driver software. However, as is typical for embedded software, conventional testing methods often fail to detect hidden flaws in the complex device driver software. This deficiency incurs significant development and operation overhead to the manufacturers.
In order to compensate for the weaknesses of conventional testing, we have applied NuSMV, Spin, and CBMC to verify the correctness of a multi-sector read operation of the Samsung OneNANDTM flash device driver and studied their relative strengths and weaknesses empirically. Through this project, we verified the correctness of the multi-sector read operation on a small scale. The results demonstrate the feasibility of using model checking techniques to verify the control algorithm of a device driver in an industrial setting.
This work was supported by KAIST Institute for Information Technology Convergence and Samsung Electronics.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Samsung OneNAND fusion memory, http://www.samsung.com/global/business/semiconductor/products/fusionmemory/Products_OneNAND.html
SAT competition 2007: a satellite event of the SAT 2007 conference (2007), http://www.satcompetition.org/2007/
Bollig, B., Wegener, I.: Improving the variable ordering of obdds is np-complete. IEEE Transactions on Computers 45(9) (September 1996)
Bouajjani, A., Habermehl, P., Rogalewicz, A., Vojnar, T.: Abstract regular tree model checking of complex dynamic data structures. In: 13th International Static Analysis Symposium, pp. 52–70 (2006)
Chan, W., Anderson, R.J., Beame, P., Burns, S., Modugno, F., Notkin, D., Reese, J.D.: Model checking large software specifications. IEEE Transactions on Software Engineering 24(7), 498–520 (1998)
Cimatti, A., Clarke, E.M., Giunchiglia, E., Giunchiglia, F., Pistore, M., Roveri, M., Sebastiani, R., Tacchella, A.: NuSMV 2: An opensource tool for symbolic model checking. In: Proceeding of International Conference on Computer-Aided Verification (2002)
Clarke, E., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided abstraction refinement. In: Proceedings of the 12th International Conference on Computer Aided Verification, July 2000, pp. 154–169 (2000)
Darga, P.T., Boyapati, C.: Efficient software model checking of data structure properties. In: 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (2006)
Dong, Y., Du, X., Holzmann, G.J., Smolka, S.A.: Fighting livelock in the GNU i-protocol: a case study in explicit-state model checking. International Journal on Software Tools for Technology Transfer (4) (2003)
Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)
Eén, N., Sörensson, N.: An Extensible SAT-solver. In: Giunchiglia, E., Tacchella, A. (eds.) SAT 2003. LNCS, vol. 2919, pp. 502–518. Springer, Heidelberg (2004)
Eisner, C., Peled, D.: Comparing symbolic and explicit model checking of a software system. In: SPIN Workshop (2002)
Ball, T., et al.: Thorough static analysis of device drivers. ACM SIGOPS Operating Systems Review 40(4), 73–85 (2006)
Holzmann, G.J.: The Spin Model Checker. Wiley, New York (2003)
Holzmann, G.J., Joshi, R.: Model-driven software verification. In: Spin Workshop (2004)
Graf, S., Saidi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997)
Geldenhuys, J., Valmari, A.: A nearly memory-optimal data structure for sets and mappings. In: Spin Workshop (2003)
Zhang, L., Malik, S.: The quest for efficient boolean satisfiability solvers. In: Computer Aided Verification (2002)
McMillan, K.: Verification of infinite state systems by compositional model checking. In: Conference on Hardware Design and Verification Methods (1999)
Miller, S.P., Tribble, A.C., Whalen, M.W., Heimdahl, M.P.E.: Proving the shalls: Early validation of requirements through formal methods. International Journal on Software Tools for Technology Transfer 8(4), 303–319 (2006)
Kim, M., Kim, Y., Choi, Y., Kim, H.: Pre-testing flash device driver through model checking techniques. In: IEEE Int. Conf. on Software Testing, Verification and Validation (2008)
Monniaux, D.: Verification of device drivers and intelligent controllers: A case study. In: 7th ACM and IEEE international conference on Embedded Software (2006)
Rudell, R.: Dynamic variable ordering for ordered binary decision diagrams. In: International Conference on Computer-Aided Design(ICCAD) (November 1993)
Anand, S., Pasareanu, C.S., Visser, W.: Symbolic execution with abstraction. Software Tools for Technology Transfer (2008)
Witkowski, T., Blanc, N., Kroening, D., Weissenbacher, G.: Model checking concurrent linux device drivers. In: Automated Software Engineering (November 2007)
Choi, Y.: From NuSMV to SPIN: Experiences with model checking flight guidance systems. Formal Methods in System Design, 199–216 (2007)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kim, M., Choi, Y., Kim, Y., Kim, H. (2008). Formal Verification of a Flash Memory Device Driver – An Experience Report . In: Havelund, K., Majumdar, R., Palsberg, J. (eds) Model Checking Software. SPIN 2008. Lecture Notes in Computer Science, vol 5156. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-85114-1_12
Download citation
DOI: https://doi.org/10.1007/978-3-540-85114-1_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-85113-4
Online ISBN: 978-3-540-85114-1
eBook Packages: Computer ScienceComputer Science (R0)