A flash memory initialization method executed by a flash memory initialization device to initialize a flash memory device comprising a flash memory and a flash memory controller, comprising:
- determining an acceptable maximum number N of candidate addresses each being formed by a combination of a row address and a column address wherein N is an integer;
- determining a number M of different capacity sizes which can be supported by the flash memory device wherein M is an integer smaller than N;
- classifying the candidate addresses into M portions respectively corresponding to the different capacity sizes to determine a number of candidate addresses in each of the M portions;
- for an m-th portion of candidate addresses wherein m ranges from one to M:
- determining a difference value between two address values of any two adjacent addresses among the m-th portion of candidate addresses;
- determining multiple address values of the m-th portion of candidate addresses according to the difference value between the two address values of the any two adjacent addresses;
- and
- determining actual addresses of the m-th portion of candidate addresses according to the multiple address values of the m-th portion of candidate addresses;
- and
- writing boot up information from the flash memory initialization device into the flash memory device by controlling the flash memory controller to write the boot up information into at least one storage location corresponding to at least one of the m-th portion of candidate addresses in the flash memory device according to the actual addresses of the m-th portion of candidate addresses.